From 10c6d6349e51bb245b9deec4aafca9885971135b Mon Sep 17 00:00:00 2001 From: Tobias Hieta Date: Tue, 23 Jul 2024 11:02:41 +0200 Subject: [PATCH] Clear release notes for upcoming LLVM 20 dev cycle --- clang-tools-extra/docs/ReleaseNotes.rst | 428 -------- clang/docs/ReleaseNotes.rst | 1195 ----------------------- libcxx/docs/ReleaseNotes.rst | 2 +- lld/docs/ReleaseNotes.rst | 69 -- llvm/docs/ReleaseNotes.rst | 317 ------ openmp/docs/ReleaseNotes.rst | 2 +- pstl/docs/ReleaseNotes.rst | 2 +- 7 files changed, 3 insertions(+), 2012 deletions(-) diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 083b098d05d4a..642ad39cc0c1c 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -48,10 +48,6 @@ Major New Features Improvements to clangd ---------------------- -- Introduced exmperimental support for C++20 Modules. The experimental support can - be enabled by `-experimental-modules-support` option. It is in an early development - stage and may not perform efficiently in real-world scenarios. - Inlay hints ^^^^^^^^^^^ @@ -73,9 +69,6 @@ Code completion Code actions ^^^^^^^^^^^^ -- The tweak for turning unscoped into scoped enums now removes redundant prefixes - from the enum values. - Signature help ^^^^^^^^^^^^^^ @@ -88,23 +81,12 @@ Objective-C Miscellaneous ^^^^^^^^^^^^^ -- Added a boolean option `AnalyzeAngledIncludes` to `Includes` config section, - which allows to enable unused includes detection for all angled ("system") headers. - At this moment umbrella headers are not supported, so enabling this option - may result in false-positives. - Improvements to clang-doc ------------------------- Improvements to clang-query --------------------------- -- Added the `file` command to dynamically load a list of commands and matchers - from an external file, allowing the cost of reading the compilation database - and building the AST to be imposed just once for faster prototyping. - -- Removed support for ``enable output srcloc``. Fixes #GH82591 - Improvements to clang-rename ---------------------------- @@ -113,431 +95,21 @@ The improvements are... Improvements to clang-tidy -------------------------- -- Improved :program:`run-clang-tidy.py` script. Added argument `-source-filter` - to filter source files from the compilation database, via a RegEx. In a - similar fashion to what `-header-filter` does for header files. - Added progress indicator with a number of processed files and the runtime of - each invocation after completion. - -- Improved :program:`check_clang_tidy.py` script. Added argument `-export-fixes` - to aid in clang-tidy and test development. - -- Fixed bug where big values for unsigned check options overflowed into negative values - when being printed with `--dump-config`. - -- Fixed `--verify-config` option not properly parsing checks when using the - literal operator in the `.clang-tidy` config. - -- Added argument `--exclude-header-filter` and config option `ExcludeHeaderFilterRegex` - to exclude headers from analysis via a RegEx. - -- Added argument `--allow-no-checks` to suppress "no checks enabled" error - when disabling all of the checks by `--checks='-*'`. - New checks ^^^^^^^^^^ -- New :doc:`boost-use-ranges - ` check. - - Detects calls to standard library iterator algorithms that could be replaced - with a Boost ranges version instead. - -- New :doc:`bugprone-crtp-constructor-accessibility - ` check. - - Detects error-prone Curiously Recurring Template Pattern usage, when the CRTP - can be constructed outside itself and the derived class. - -- New :doc:`bugprone-pointer-arithmetic-on-polymorphic-object - ` check. - - Finds pointer arithmetic performed on classes that contain a virtual function. - -- New :doc:`bugprone-return-const-ref-from-parameter - ` check. - - Detects return statements that return a constant reference parameter as constant - reference. This may cause use-after-free errors if the caller uses xvalues as - arguments. - -- New :doc:`bugprone-suspicious-stringview-data-usage - ` check. - - Identifies suspicious usages of ``std::string_view::data()`` that could lead - to reading out-of-bounds data due to inadequate or incorrect string null - termination. - -- New :doc:`misc-use-internal-linkage - ` check. - - Detects variables and functions that can be marked as static or moved into - an anonymous namespace to enforce internal linkage. - -- New :doc:`modernize-min-max-use-initializer-list - ` check. - - Replaces nested ``std::min`` and ``std::max`` calls with an initializer list - where applicable. - -- New :doc:`modernize-use-designated-initializers - ` check. - - Finds initializer lists for aggregate types that could be - written as designated initializers instead. - -- New :doc:`modernize-use-ranges - ` check. - - Detects calls to standard library iterator algorithms that could be replaced - with a ranges version instead. - -- New :doc:`modernize-use-std-format - ` check. - - Converts calls to ``absl::StrFormat``, or other functions via - configuration options, to C++20's ``std::format``, or another function - via a configuration option, modifying the format string appropriately and - removing now-unnecessary calls to ``std::string::c_str()`` and - ``std::string::data()``. - -- New :doc:`readability-enum-initial-value - ` check. - - Enforces consistent style for enumerators' initialization, covering three - styles: none, first only, or all initialized explicitly. - -- New :doc:`readability-math-missing-parentheses - ` check. - - Check for missing parentheses in mathematical expressions that involve - operators of different priorities. - -- New :doc:`readability-use-std-min-max - ` check. - - Replaces certain conditional statements with equivalent calls to - ``std::min`` or ``std::max``. - New check aliases ^^^^^^^^^^^^^^^^^ -- New alias :doc:`cert-ctr56-cpp ` to - :doc:`bugprone-pointer-arithmetic-on-polymorphic-object - ` - was added. - -- New alias :doc:`cert-int09-c ` to - :doc:`readability-enum-initial-value ` - was added. - Changes in existing checks ^^^^^^^^^^^^^^^^^^^^^^^^^^ -- Improved :doc:`bugprone-assert-side-effect - ` check by detecting side - effect from calling a method with non-const reference parameters. - -- Improved :doc:`bugprone-assignment-in-if-condition - ` check by ignoring - assignments in the C++20 ``requires`` clause. - -- Improved :doc:`bugprone-casting-through-void - ` check by ignoring casts - where source is already a ``void``` pointer, making middle ``void`` pointer - casts bug-free. - -- Improved :doc:`bugprone-exception-escape - ` check to correctly detect exception - handler of type ``CV void *`` as catching all ``CV`` compatible pointer types. - -- Improved :doc:`bugprone-forwarding-reference-overload - ` - check to ignore deleted constructors which won't hide other overloads. - -- Improved :doc:`bugprone-implicit-widening-of-multiplication-result - ` check - by adding an option to ignore constant expressions of signed integer types - that fit in the source expression type. - -- Improved :doc:`bugprone-inc-dec-in-conditions - ` check to ignore code - within unevaluated contexts, such as ``decltype``. - -- Improved :doc:`bugprone-lambda-function-name` - check by ignoring ``__func__`` macro in lambda captures, initializers of - default parameters and nested function declarations. - -- Improved :doc:`bugprone-multi-level-implicit-pointer-conversion - ` check - by ignoring implicit pointer conversions that are part of a cast expression. - -- Improved :doc:`bugprone-non-zero-enum-to-bool-conversion - ` check by - eliminating false positives resulting from direct usage of bitwise operators - within parentheses. - -- Improved :doc:`bugprone-optional-value-conversion - ` check by eliminating - false positives resulting from use of optionals in unevaluated context. - -- Improved :doc:`bugprone-sizeof-expression - ` check by clarifying the - diagnostics, eliminating some false positives and adding a new - (off-by-default) option `WarnOnSizeOfPointer` that reports all - ``sizeof(pointer)`` expressions (except for a few that are idiomatic). - -- Improved :doc:`bugprone-suspicious-include - ` check by replacing the local - options `HeaderFileExtensions` and `ImplementationFileExtensions` by the - global options of the same name. - -- Improved :doc:`bugprone-too-small-loop-variable - ` check by incorporating - better support for ``const`` loop boundaries. - -- Improved :doc:`bugprone-unused-local-non-trivial-variable - ` check by - ignoring local variable with ``[maybe_unused]`` attribute. - -- Improved :doc:`bugprone-unused-return-value - ` check by updating the - parameter `CheckedFunctions` to support regexp, avoiding false positive for - function with the same prefix as the default argument, e.g. ``std::unique_ptr`` - and ``std::unique``, avoiding false positive for assignment operator overloading. - -- Improved :doc:`bugprone-use-after-move - ` check to also handle - calls to ``std::forward``. Fixed sequencing of designated initializers. Fixed - sequencing of callees: In C++17 and later, the callee of a function is guaranteed - to be sequenced before the arguments, so don't warn if the use happens in the - callee and the move happens in one of the arguments. - -- Improved :doc:`cppcoreguidelines-avoid-non-const-global-variables - ` check - with a new option `AllowInternalLinkage` to disable the warning for variables - with internal linkage. - -- Improved :doc:`cppcoreguidelines-macro-usage - ` check by ignoring macro with - hash preprocessing token. - -- Improved :doc:`cppcoreguidelines-missing-std-forward - ` check by no longer - giving false positives for deleted functions, by fixing false negatives when only - a few parameters are forwarded and by ignoring parameters without a name (unused - arguments). - -- Improved :doc:`cppcoreguidelines-owning-memory - ` check to properly handle - return type in lambdas and in nested functions. - -- Improved :doc:`cppcoreguidelines-prefer-member-initializer - ` check - by removing enforcement of rule `C.48 - `_, - which was deprecated since :program:`clang-tidy` 17. This rule is now covered - by :doc:`cppcoreguidelines-use-default-member-init - `. Fixed - incorrect hints when using list-initialization. - -- Improved :doc:`cppcoreguidelines-special-member-functions - ` check with a - new option `AllowImplicitlyDeletedCopyOrMove`, which removes the requirement - for explicit copy or move special member functions when they are already - implicitly deleted. - -- Improved :doc:`google-build-namespaces - ` check by replacing the local - option `HeaderFileExtensions` by the global option of the same name. - -- Improved :doc:`google-explicit-constructor - ` check to better handle - C++20 `explicit(bool)`. - -- Improved :doc:`google-global-names-in-headers - ` check by replacing the local - option `HeaderFileExtensions` by the global option of the same name. - -- Improved :doc:`google-runtime-int ` - check performance through optimizations. - -- Improved :doc:`hicpp-signed-bitwise ` - check by ignoring false positives involving positive integer literals behind - implicit casts when `IgnorePositiveIntegerLiterals` is enabled. - -- Improved :doc:`hicpp-ignored-remove-result ` - check by ignoring other functions with same prefixes as the target specific - functions. - -- Improved :doc:`linuxkernel-must-check-errs - ` check documentation to - consistently use the check's proper name. - -- Improved :doc:`llvm-header-guard - ` check by replacing the local - option `HeaderFileExtensions` by the global option of the same name. - -- Improved :doc:`misc-const-correctness - ` check by avoiding infinite recursion - for recursive functions with forwarding reference parameters and reference - variables which refer to themselves. Also adapted the check to work with - function-try-blocks. - -- Improved :doc:`misc-definitions-in-headers - ` check by replacing the local - option `HeaderFileExtensions` by the global option of the same name. - Additionally, the option `UseHeaderFileExtensions` is removed, so that the - check uses the `HeaderFileExtensions` option unconditionally. - -- Improved :doc:`misc-header-include-cycle - ` check by avoiding crash for self - include cycles. - -- Improved :doc:`misc-unused-using-decls - ` check by replacing the local - option `HeaderFileExtensions` by the global option of the same name. - -- Improved :doc:`misc-use-anonymous-namespace - ` check by replacing the local - option `HeaderFileExtensions` by the global option of the same name. - -- Improved :doc:`modernize-avoid-c-arrays - ` check by introducing the new - `AllowStringArrays` option, enabling the exclusion of array types with deduced - length initialized from string literals. - -- Improved :doc:`modernize-loop-convert - ` check by ensuring that fix-its - don't remove parentheses used in ``sizeof`` calls when they have array index - accesses as arguments. - -- Improved :doc:`modernize-use-constraints - ` check by fixing a crash that - occurred in some scenarios and excluding system headers from analysis. - -- Improved :doc:`modernize-use-nullptr - ` check to include support for C23, - which also has introduced the ``nullptr`` keyword. - -- Improved :doc:`modernize-use-override - ` check to also remove any trailing - whitespace when deleting the ``virtual`` keyword. - -- Improved :doc:`modernize-use-starts-ends-with - ` check to also handle - calls to ``compare`` method. - -- Improved :doc:`modernize-use-std-print - ` check to not crash if the - format string parameter of the function to be replaced is not of the - expected type. - -- Improved :doc:`modernize-use-using ` - check by adding support for detection of typedefs declared on function level. - -- Improved :doc:`performance-inefficient-vector-operation - ` fixing false - negatives caused by different variable definition type and variable initial - value type in loop initialization expression. - -- Improved :doc:`performance-move-const-arg - ` check by ignoring - ``std::move()`` calls when their target is used as an rvalue. - -- Improved :doc:`performance-unnecessary-copy-initialization - ` check by - detecting more cases of constant access. In particular, pointers can be - analyzed, so the check now handles the common patterns - `const auto e = (*vector_ptr)[i]` and `const auto e = vector_ptr->at(i);`. - Calls to mutable function where there exists a `const` overload are also - handled. Fix crash in the case of a non-member operator call. - -- Improved :doc:`performance-unnecessary-value-param - ` check - detecting more cases for template functions including lambdas with ``auto``. - E.g., ``std::sort(a.begin(), a.end(), [](auto x, auto y) { return a > b; });`` - will be detected for expensive to copy types. Fixed false positives for - dependent call expressions. - -- Improved :doc:`readability-avoid-return-with-void-value - ` check by adding - fix-its. - -- Improved :doc:`readability-const-return-type - ` check to eliminate false - positives when returning types with const not at the top level. - -- Improved :doc:`readability-container-size-empty - ` check to prevent false - positives when utilizing ``size`` or ``length`` methods that accept parameter. - Fixed crash when facing template user defined literals. - -- Improved :doc:`readability-duplicate-include - ` check by excluding include - directives that form the filename using macro. - -- Improved :doc:`readability-else-after-return - ` check to ignore - `if consteval` statements, for which the `else` branch must not be removed. - -- Improved :doc:`readability-identifier-naming - ` check in `GetConfigPerFile` - mode by resolving symbolic links to header files. Fixed handling of Hungarian - Prefix when configured to `LowerCase`. Added support for renaming designated - initializers. Added support for renaming macro arguments. Fixed renaming - conflicts arising from out-of-line member function template definitions. - -- Improved :doc:`readability-implicit-bool-conversion - ` check to provide - valid fix suggestions for ``static_cast`` without a preceding space and - fixed problem with duplicate parentheses in double implicit casts. Corrected - the fix suggestions for C23 and later by using C-style casts instead of - ``static_cast``. Fixed false positives in C++20 spaceship operator by ignoring - casts in implicit and defaulted functions. - -- Improved :doc:`readability-redundant-inline-specifier - ` check to properly - emit warnings for static data member with an in-class initializer. - -- Improved :doc:`readability-redundant-member-init - ` check to avoid - false-positives when type of the member does not match the type of the - initializer. - -- Improved :doc:`readability-static-accessed-through-instance - ` check to - support calls to overloaded operators as base expression and provide fixes to - expressions with side-effects. - -- Improved :doc:`readability-simplify-boolean-expr - ` check to avoid to emit - warning for macro when IgnoreMacro option is enabled and improve messages - when auto-fix does not work. - -- Improved :doc:`readability-static-definition-in-anonymous-namespace - ` - check by resolving fix-it overlaps in template code by disregarding implicit - instances. - -- Improved :doc:`readability-string-compare - ` check to also detect - usages of ``std::string_view::compare``. Added a `StringLikeClasses` option - to detect usages of ``compare`` method in custom string-like classes. - Removed checks ^^^^^^^^^^^^^^ -- Removed `cert-dcl21-cpp`, which was deprecated since :program:`clang-tidy` 17, - since the rule DCL21-CPP has been removed from the CERT guidelines. - Miscellaneous ^^^^^^^^^^^^^ -- Fixed incorrect formatting in :program:`clang-apply-replacements` when no - `--format` option is specified. Now :program:`clang-apply-replacements` - applies formatting only with the option. - Improvements to include-fixer ----------------------------- diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 24d88ed6edf00..83fd5dc31547e 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -37,136 +37,23 @@ These changes are ones which we think may surprise users when upgrading to Clang |release| because of the opportunity they pose for disruption to existing code bases. -- Setting the deprecated CMake variable ``GCC_INSTALL_PREFIX`` (which sets the - default ``--gcc-toolchain=``) now leads to a fatal error. - C/C++ Language Potentially Breaking Changes ------------------------------------------- -- Clang now supports raw string literals in ``-std=gnuXY`` mode as an extension in - C99 and later. This behaviour can also be overridden using ``-f[no-]raw-string-literals``. - Support of raw string literals in C++ is not affected. Fixes (#GH85703). - C++ Specific Potentially Breaking Changes ----------------------------------------- -- Clang now diagnoses function/variable templates that shadow their own template parameters, e.g. ``template void T();``. - This error can be disabled via `-Wno-strict-primary-template-shadow` for compatibility with previous versions of clang. - -- The behavior controlled by the `-frelaxed-template-template-args` flag is now - on by default, and the flag is deprecated. Until the flag is finally removed, - it's negative spelling can be used to obtain compatibility with previous - versions of clang. The deprecation warning for the negative spelling can be - disabled with `-Wno-deprecated-no-relaxed-template-template-args`. - -- Clang no longer tries to form pointer-to-members from qualified and parenthesized unevaluated expressions - such as ``decltype(&(foo::bar))``. (#GH40906). - -- Clang now performs semantic analysis for unary operators with dependent operands - that are known to be of non-class non-enumeration type prior to instantiation. - - This change uncovered a bug in libstdc++ 14.1.0 which may cause compile failures - on systems using that version of libstdc++ and Clang 19, with an error that looks - something like this: - - .. code-block:: text - - :4:5: error: expression is not assignable - 4 | ++this; - | ^ ~~~~ - - To fix this, update libstdc++ to version 14.1.1 or greater. ABI Changes in This Version --------------------------- -- Fixed Microsoft name mangling of implicitly defined variables used for thread - safe static initialization of static local variables. This change resolves - incompatibilities with code compiled by MSVC but might introduce - incompatibilities with code compiled by earlier versions of Clang when an - inline member function that contains a static local variable with a dynamic - initializer is declared with ``__declspec(dllimport)``. (#GH83616). - -- Fixed Microsoft name mangling of lifetime extended temporary objects. This - change corrects missing back reference registrations that could result in - incorrect back reference indexes and suprising demangled name results. Since - MSVC uses a different mangling for these objects, compatibility is not affected. - (#GH85423). - -- Fixed Microsoft calling convention for returning certain classes with a - templated constructor. If a class has a templated constructor, it should - be returned indirectly even if it meets all the other requirements for - returning a class in a register. This affects some uses of std::pair. - (#GH86384). - -- Fixed Microsoft calling convention when returning classes that have a deleted - copy assignment operator. Such a class should be returned indirectly. - -- Removed the global alias that was pointing to AArch64 Function Multiversioning - ifuncs. Its purpose was to preserve backwards compatibility when the ".ifunc" - suffix got removed from the name mangling. The alias interacts badly with - GlobalOpt (see the issue #96197). - -- Fixed Microsoft name mangling for auto non-type template arguments of pointer - type for MSVC 1920+. This change resolves incompatibilities with code compiled - by MSVC 1920+ but will introduce incompatibilities with code compiled by - earlier versions of Clang unless such code is built with the compiler option - `-fms-compatibility-version=19.14` to imitate the MSVC 1914 mangling behavior. - -- Fixed Microsoft name mangling for auto non-type template arguments of pointer - to member type for MSVC 1920+. This change resolves incompatibilities with code - compiled by MSVC 1920+ but will introduce incompatibilities with code compiled by - earlier versions of Clang unless such code is built with the compiler option - `-fms-compatibility-version=19.14` to imitate the MSVC 1914 mangling behavior. - (GH#70899). AST Dumping Potentially Breaking Changes ---------------------------------------- -- The text ast-dumper has improved printing of TemplateArguments. -- The text decl-dumper prints template parameters' trailing requires expressions now. - Clang Frontend Potentially Breaking Changes ------------------------------------------- -- Removed support for constructing on-stack ``TemplateArgumentList``\ s; interfaces should instead - use ``ArrayRef`` to pass template arguments. Transitioning internal uses to - ``ArrayRef`` reduces AST memory usage by 0.4% when compiling clang, and is - expected to show similar improvements on other workloads. - -- The ``-Wgnu-binary-literal`` diagnostic group no longer controls any - diagnostics. Binary literals are no longer a GNU extension, they're now a C23 - extension which is controlled via ``-pedantic`` or ``-Wc23-extensions``. Use - of ``-Wno-gnu-binary-literal`` will no longer silence this pedantic warning, - which may break existing uses with ``-Werror``. - -- The normalization of 3 element target triples where ``-none-`` is the middle - element has changed. For example, ``armv7m-none-eabi`` previously normalized - to ``armv7m-none-unknown-eabi``, with ``none`` for the vendor and ``unknown`` - for the operating system. It now normalizes to ``armv7m-unknown-none-eabi``, - which has ``unknown`` vendor and ``none`` operating system. - - The affected triples are primarily for bare metal Arm where it is intended - that ``none`` means that there is no operating system. As opposed to an unknown - type of operating system. - - This change my cause clang to not find libraries, or libraries to be built at - different file system locations. This can be fixed by changing your builds to - use the new normalized triple. However, we recommend instead getting the - normalized triple from clang itself, as this will make your builds more - robust in case of future changes:: - - $ clang --target= -print-target-triple - - -- The ``hasTypeLoc`` AST matcher will no longer match a ``classTemplateSpecializationDecl``; - existing uses should switch to ``templateArgumentLoc`` or ``hasAnyTemplateArgumentLoc`` instead. Clang Python Bindings Potentially Breaking Changes -------------------------------------------------- -- Renamed ``CursorKind`` variant 272 from ``OMP_TEAMS_DISTRIBUTE_DIRECTIVE`` - to ``OMP_TEAMS_DISTRIBUTE_SIMD_DIRECTIVE``. The previous name was incorrect, it was a duplicate - of variant 271. -- Renamed ``TypeKind`` variant 162 from ``OBJCCLASS`` to ``OBJCTYPEPARAM``. - The previous name was incorrect, it was a duplicate of variant 28. -- Refactored enum implementation, switching to the standard library `Enum` type. What's New in Clang |release|? ============================== @@ -175,961 +62,81 @@ here. Generic improvements to Clang as a whole or to its underlying infrastructure are described first, followed by language-specific sections with improvements to Clang's support for those languages. -- Implemented improvements to BMIs for C++20 Modules that can reduce - the number of rebuilds during incremental recompilation. We are seeking - feedback from Build System authors and other interested users, especially - when you feel Clang changes the BMI and misses an opportunity to avoid - recompilations or causes correctness issues. See StandardCPlusPlusModules - `StandardCPlusPlusModules `_ for more details. - -- The ``\par`` documentation comment command now supports an optional - argument, which denotes the header of the paragraph started by - an instance of the ``\par`` command comment. The implementation - of the argument handling matches its semantics - `in Doxygen `. - Namely, any text on the same line as the ``\par`` command will become - a header for the paragaph, and if there is no text then the command - will start a new paragraph. - C++ Language Changes -------------------- -- C++17 support is now completed, with the enablement of the - relaxed temlate template argument matching rules introduced in P0522, - which was retroactively applied as a defect report. - While the implementation already existed since Clang 4, it was turned off by - default, and was controlled with the `-frelaxed-template-template-args` flag. - In this release, we implement provisional wording for a core defect on - P0522 (CWG2398), which avoids the most serious compatibility issues caused - by it, allowing us to enable it by default in this release. - The flag is now deprecated, and will be removed in the next release, but can - still be used to turn it off and regain compatibility with previous versions - (#GH36505). -- Implemented ``_BitInt`` literal suffixes ``__wb`` or ``__WB`` as a Clang extension with ``unsigned`` modifiers also allowed. (#GH85223). C++17 Feature Support ^^^^^^^^^^^^^^^^^^^^^ -- Clang now exposes ``__GCC_DESTRUCTIVE_SIZE`` and ``__GCC_CONSTRUCTIVE_SIZE`` - predefined macros to support standard library implementations of - ``std::hardware_destructive_interference_size`` and - ``std::hardware_constructive_interference_size``, respectively. These macros - are predefined in all C and C++ language modes. The values the macros - expand to are not stable between releases of Clang and do not need to match - the values produced by GCC, so these macros should not be used from header - files because they may not be stable across multiple TUs (the values may vary - based on compiler version as well as CPU tuning). #GH60174 C++14 Feature Support ^^^^^^^^^^^^^^^^^^^^^ -- Sized deallocation is enabled by default in C++14 onwards. The user may specify - ``-fno-sized-deallocation`` to disable it if there are some regressions. C++20 Feature Support ^^^^^^^^^^^^^^^^^^^^^ -- Clang won't perform ODR checks for decls in the global module fragment any - more to ease the implementation and improve the user's using experience. - This follows the MSVC's behavior. Users interested in testing the more strict - behavior can use the flag '-Xclang -fno-skip-odr-check-in-gmf'. - (#GH79240). - -- Implemented the `__is_layout_compatible` and `__is_pointer_interconvertible_base_of` - intrinsics to support - `P0466R5: Layout-compatibility and Pointer-interconvertibility Traits `_. - -- Clang now implements [module.import]p7 fully. Clang now will import module - units transitively for the module units coming from the same module of the - current module units. Fixes #GH84002 - -- Initial support for class template argument deduction (CTAD) for type alias - templates (`P1814R0 `_). - (#GH54051). - -- We have sufficient confidence and experience with the concepts implementation - to update the ``__cpp_concepts`` macro to `202002L`. This enables - ```` from libstdc++ to work correctly with Clang. - -- User defined constructors are allowed for copy-list-initialization with CTAD. - (#GH62925). - C++23 Feature Support ^^^^^^^^^^^^^^^^^^^^^ -- Implemented `P2718R0: Lifetime extension in range-based for loops `_. Also - materialize temporary object which is a prvalue in discarded-value expression. -- Implemented `P1774R8: Portable assumptions `_. - -- Implemented `P2448R2: Relaxing some constexpr restrictions `_. - Note, the ``-Winvalid-constexpr`` diagnostic is now disabled in C++23 mode, - but can be explicitly specified to retain the old diagnostic checking - behavior. - -- Added a ``__reference_converts_from_temporary`` builtin, completing the necessary compiler support for - `P2255R2: Type trait to determine if a reference binds to a temporary `_. - -- Implemented `P2797R0: Static and explicit object member functions with the same parameter-type-lists `_. - This completes the support for "deducing this". - C++2c Feature Support ^^^^^^^^^^^^^^^^^^^^^ -- Implemented `P2662R3 Pack Indexing `_. - -- Implemented `P2573R2: = delete("should have a reason"); `_ - -- Implemented `P0609R3: Attributes for Structured Bindings `_ - -- Implemented `P2748R5 Disallow Binding a Returned Glvalue to a Temporary `_. - -- Implemented `P2809R3: Trivial infinite loops are not Undefined Behavior `_. - -- Implemented `P3144R2 Deleting a Pointer to an Incomplete Type Should be Ill-formed `_. - -- Implemented `P2963R3 Ordering of constraints involving fold expressions `_. - - Resolutions to C++ Defect Reports ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -- Substitute template parameter pack, when it is not explicitly specified - in the template parameters, but is deduced from a previous argument. (#GH78449) - -- Type qualifications are now ignored when evaluating layout compatibility - of two types. - (`CWG1719: Layout compatibility and cv-qualification revisited `_). - -- Alignment of members is now respected when evaluating layout compatibility - of structs. - (`CWG2583: Common initial sequence should consider over-alignment `_). - -- ``[[no_unique_address]]`` is now respected when evaluating layout - compatibility of two types. - (`CWG2759: [[no_unique_address] and common initial sequence `_). - -- Clang now diagnoses declarative nested-name-specifiers with pack-index-specifiers. - (`CWG2858: Declarative nested-name-specifiers and pack-index-specifiers `_). - -- Clang now allows attributes on concepts. - (`CWG2428: Deprecating a concept `_). - -- P0522 implementation is enabled by default in all language versions, and - provisional wording for CWG2398 is implemented. - -- Clang now performs type-only lookup for the name in ``using enum`` declaration. - (`CWG2877: Type-only lookup for using-enum-declarator `_). - -- Clang now requires a template argument list after a template keyword. - (`CWG96: Syntactic disambiguation using the template keyword `_). - -- Clang now considers ``noexcept(typeid(expr))`` more carefully, instead of always assuming that ``std::bad_typeid`` can be thrown. - (`CWG2191: Incorrect result for noexcept(typeid(v)) `_). C Language Changes ------------------ C2y Feature Support ^^^^^^^^^^^^^^^^^^^ -- Clang now enables C2y mode with ``-std=c2y``. This sets ``__STDC_VERSION__`` - to ``202400L`` so that it's greater than the value for C23. The value of this - macro is subject to change in the future. C23 Feature Support ^^^^^^^^^^^^^^^^^^^ -- No longer diagnose use of binary literals as an extension in C23 mode. Fixes - #GH72017. - -- Corrected parsing behavior for the ``alignas`` specifier/qualifier in C23. We - previously handled it as an attribute as in C++, but there are parsing - differences. The behavioral differences are: - - .. code-block:: c - - struct alignas(8) /* was accepted, now rejected */ S { - char alignas(8) /* was rejected, now accepted */ C; - }; - int i alignas(8) /* was accepted, now rejected */ ; - - Fixes (#GH81472). - -- Clang now generates predefined macros of the form ``__TYPE_FMTB__`` and - ``__TYPE_FMTb__`` (e.g., ``__UINT_FAST64_FMTB__``) in C23 mode for use with - macros typically exposed from ````, such as ``PRIb8``. (#GH81896) - -- Clang now supports `N3018 The constexpr specifier for object definitions` - `_. - -- Properly promote bit-fields of bit-precise integer types to the field's type - rather than to ``int``. #GH87641 - -- Added the ``INFINITY`` and ``NAN`` macros to Clang's ```` - freestanding implementation; these macros were defined in ```` in C99 - but C23 added them to ```` in - `WG14 N2848 `_. - -- Clang now supports `N3017 `_ - ``#embed`` - a scannable, tooling-friendly binary resource inclusion mechanism. - -- Added the ``FLT_NORM_MAX``, ``DBL_NORM_MAX``, and ``LDBL_NORM_MAX`` to the - freestanding implementation of ```` that ships with Clang. - -- Compiler support for `N2653 char8_t: A type for UTF-8 characters and strings` - `_: ``u8`` string - literals are now of type ``char8_t[N]`` in C23 and expose - ``__CLANG_ATOMIC_CHAR8_T_LOCK_FREE``/``__GCC_ATOMIC_CHAR8_T_LOCK_FREE`` to - implement the corresponding macro in ````. - -Non-comprehensive list of changes in this release -------------------------------------------------- - -- Added ``__builtin_readsteadycounter`` for reading fixed frequency hardware - counters. - -- ``__builtin_addc``, ``__builtin_subc``, and the other sizes of those - builtins are now constexpr and may be used in constant expressions. - -- Added ``__builtin_popcountg`` as a type-generic alternative to - ``__builtin_popcount{,l,ll}`` with support for any unsigned integer type. Like - the previous builtins, this new builtin is constexpr and may be used in - constant expressions. - -- Lambda expressions are now accepted in C++03 mode as an extension. - -- Added ``__builtin_clzg`` and ``__builtin_ctzg`` as type-generic alternatives - to ``__builtin_clz{,s,l,ll}`` and ``__builtin_ctz{,s,l,ll}`` respectively, - with support for any unsigned integer type. Like the previous builtins, these - new builtins are constexpr and may be used in constant expressions. - -- ``__typeof_unqual__`` is available in all C modes as an extension, which behaves - like ``typeof_unqual`` from C23, similar to ``__typeof__`` and ``typeof``. - -- ``__builtin_reduce_{add|mul|xor|or|and|min|max}`` builtins now support scalable vectors. - -* Shared libraries linked with either the ``-ffast-math``, ``-Ofast``, or - ``-funsafe-math-optimizations`` flags will no longer enable flush-to-zero - floating-point mode by default. This decision can be overridden with use of - ``-mdaz-ftz``. This behavior now matches GCC's behavior. - (`#57589 `_) - -* ``-fdenormal-fp-math=preserve-sign`` is no longer implied by ``-ffast-math`` - on x86 systems. - -- Builtins ``__builtin_shufflevector()`` and ``__builtin_convertvector()`` may - now be used within constant expressions. - -- When compiling a constexpr function, Clang will check to see whether the - function can *never* be used in a constant expression context and issues a - diagnostic under the ``-Winvalid-constexpr`` diagostic flag (which defaults - to an error). This check can be expensive because the mere presence of a - function marked ``constexpr`` will cause us to undergo constant expression - evaluation, even if the function is not called within the translation unit - being compiled. Due to the expense, Clang no longer checks constexpr function - bodies when the function is defined in a system header file or when - ``-Winvalid-constexpr`` is not enabled for the function definition, which - should result in mild compile-time performance improvements. - -- Added ``__is_bitwise_cloneable`` which is used to check whether a type - can be safely copied by memcpy/memmove. - -- ``#pragma GCC diagnostic warning "-Wfoo"`` can now downgrade ``-Werror=foo`` - errors and certain default-to-error ``-W`` diagnostics to warnings. - -- Support importing C++20 modules in clang-repl. - -- Added support for ``TypeLoc::dump()`` for easier debugging, and improved - textual and JSON dumping for various ``TypeLoc``-related nodes. - -- Clang can now emit distinct type-based alias analysis tags for incompatible - pointers, enabling more powerful alias analysis when accessing pointer types. - The new behavior can be enabled using ``-fpointer-tbaa``. - -- The ``__atomic_always_lock_free`` and ``__atomic_is_lock_free`` - builtins may now return true if the pointer argument is a - compile-time constant (e.g. ``(void*)4``), and constant pointer is - sufficiently-aligned for the access requested. Previously, only the - type of the pointer was taken into account. This improves - compatibility with GCC's libstdc++. New Compiler Flags ------------------ -- ``-fsanitize=implicit-bitfield-conversion`` checks implicit truncation and - sign change. -- ``-fsanitize=implicit-integer-conversion`` a group that replaces the previous - group ``-fsanitize=implicit-conversion``. - -- ``-Wmissing-designated-field-initializers``, grouped under ``-Wmissing-field-initializers``. - This diagnostic can be disabled to make ``-Wmissing-field-initializers`` behave - like it did before Clang 18.x. Fixes #GH56628 - -- ``-fexperimental-modules-reduced-bmi`` enables the Reduced BMI for C++20 named modules. - See the document of standard C++ modules for details. - -- ``-fexperimental-late-parse-attributes`` enables an experimental feature to - allow late parsing certain attributes in specific contexts where they would - not normally be late parsed. Currently this allows late parsing the - `counted_by` attribute in C. See `Attribute Changes in Clang`_. - -- ``-fseparate-named-sections`` uses separate unique sections for global - symbols in named special sections (i.e. symbols annotated with - ``__attribute__((section(...)))``. This enables linker GC to collect unused - symbols without having to use a per-symbol section. - -- ``-fms-define-stdc`` and its clang-cl counterpart ``/Zc:__STDC__``. - Matches MSVC behaviour by defining ``__STDC__`` to ``1`` when - MSVC compatibility mode is used. It has no effect for C++ code. - -- ``-Wc++23-compat`` group was added to help migrating existing codebases - to C++23. - -- ``-Wc++2c-compat`` group was added to help migrating existing codebases - to upcoming C++26. - -- ``-fdisable-block-signature-string`` instructs clang not to emit the signature - string for blocks. Disabling the string can potentially break existing code - that relies on it. Users should carefully consider this possibiilty when using - the flag. - -- For the ARM target, added ``-Warm-interrupt-vfp-clobber`` that will emit a - diagnostic when an interrupt handler is declared and VFP is enabled. - -- ``-fpointer-tbaa`` enables emission of distinct type-based alias - analysis tags for incompatible pointers. Deprecated Compiler Flags ------------------------- -- The ``-Ofast`` command-line option has been deprecated. This option both - enables the ``-O3`` optimization-level, as well as enabling non-standard - ``-ffast-math`` behaviors. As such, it is somewhat misleading as an - "optimization level". Users are advised to switch to ``-O3 -ffast-math`` if - the use of non-standard math behavior is intended, and ``-O3`` otherwise. - See `RFC `_ for details. - Modified Compiler Flags ----------------------- -- Added a new diagnostic flag ``-Wreturn-mismatch`` which is grouped under - ``-Wreturn-type``, and moved some of the diagnostics previously controlled by - ``-Wreturn-type`` under this new flag. Fixes #GH72116. -- ``-fsanitize=implicit-conversion`` is now a group for both - ``-fsanitize=implicit-integer-conversion`` and - ``-fsanitize=implicit-bitfield-conversion``. - -- Added ``-Wcast-function-type-mismatch`` under the ``-Wcast-function-type`` - warning group. Moved the diagnostic previously controlled by - ``-Wcast-function-type`` to the new warning group and added - ``-Wcast-function-type-mismatch`` to ``-Wextra``. #GH76872 - - .. code-block:: c - - int x(long); - typedef int (f2)(void*); - typedef int (f3)(); - - void func(void) { - // Diagnoses under -Wcast-function-type, -Wcast-function-type-mismatch, - // -Wcast-function-type-strict, -Wextra - f2 *b = (f2 *)x; - // Diagnoses under -Wcast-function-type, -Wcast-function-type-strict - f3 *c = (f3 *)x; - } - -- Carved out ``-Wformat`` warning about scoped enums into a subwarning and - make it controlled by ``-Wformat-pedantic``. Fixes #GH88595. - -- Trivial infinite loops (i.e loops with a constant controlling expresion - evaluating to ``true`` and an empty body such as ``while(1);``) - are considered infinite, even when the ``-ffinite-loop`` flag is set. - -- Diagnostics groups about compatibility with a particular C++ Standard version - now include dianostics about C++26 features that are not present in older - versions. - -- Removed the "arm interrupt calling convention" warning that was included in - ``-Wextra`` without its own flag. This warning suggested adding - ``__attribute__((interrupt))`` to functions that are called from interrupt - handlers to prevent clobbering VFP registers. Following this suggestion leads - to unpredictable behavior by causing multiple exception returns from one - exception. Fixes #GH34876. Removed Compiler Flags ------------------------- -- The ``-freroll-loops`` flag has been removed. It had no effect since Clang 13. -- ``-m[no-]unaligned-access`` is removed for RISC-V and LoongArch. - ``-m[no-]strict-align``, also supported by GCC, should be used instead. (#GH85350) - Attribute Changes in Clang -------------------------- -- Introduced a new function attribute ``__attribute__((amdgpu_max_num_work_groups(x, y, z)))`` or - ``[[clang::amdgpu_max_num_work_groups(x, y, z)]]`` for the AMDGPU target. This attribute can be - attached to HIP or OpenCL kernel function definitions to provide an optimization hint. The parameters - ``x``, ``y``, and ``z`` specify the maximum number of workgroups for the respective dimensions, - and each must be a positive integer when provided. The parameter ``x`` is required, while ``y`` and - ``z`` are optional with default value of 1. - -- The ``swiftasynccc`` attribute is now considered to be a Clang extension - rather than a language standard feature. Please use - ``__has_extension(swiftasynccc)`` to check the availability of this attribute - for the target platform instead of ``__has_feature(swiftasynccc)``. Also, - added a new extension query ``__has_extension(swiftcc)`` corresponding to the - ``__attribute__((swiftcc))`` attribute. - -- The ``_Nullable`` and ``_Nonnull`` family of type attributes can now apply - to certain C++ class types, such as smart pointers: - ``void useObject(std::unique_ptr _Nonnull obj);``. - - This works for standard library types including ``unique_ptr``, ``shared_ptr``, - and ``function``. See - `the attribute reference documentation `_ - for the full list. - -- The ``_Nullable`` attribute can be applied to C++ class declarations: - ``template class _Nullable MySmartPointer {};``. - - This allows the ``_Nullable`` and ``_Nonnull`` family of type attributes to - apply to this class. - -- Clang now warns that the ``exclude_from_explicit_instantiation`` attribute - is ignored when applied to a local class or a member thereof. - -- The ``clspv_libclc_builtin`` attribute has been added to allow clspv - (`OpenCL-C to Vulkan SPIR-V compiler `_) to identify functions coming from libclc - (`OpenCL-C builtin library `_). -- The ``counted_by`` attribute is now allowed on pointers that are members of a - struct in C. - -- The ``counted_by`` attribute can now be late parsed in C when - ``-fexperimental-late-parse-attributes`` is passed but only when attribute is - used in the declaration attribute position. This allows using the - attribute on existing code where it previously impossible to do so without - re-ordering struct field declarations would break ABI as shown below. - - .. code-block:: c - - struct BufferTy { - /* Refering to `count` requires late parsing */ - char* buffer __counted_by(count); - /* Swapping `buffer` and `count` to avoid late parsing would break ABI */ - size_t count; - }; - -- The attributes ``sized_by``, ``counted_by_or_null`` and ``sized_by_or_null``` - have been added as variants on ``counted_by``, each with slightly different semantics. - ``sized_by`` takes a byte size parameter instead of an element count, allowing pointees - with unknown size. The ``counted_by_or_null`` and ``sized_by_or_null`` variants are equivalent - to their base variants, except the pointer can be null regardless of count/size value. - If the pointer is null the size is effectively 0. ``sized_by_or_null`` is needed to properly - annotate allocator functions like ``malloc`` that return a buffer of a given byte size, but can - also return null. - -- The ``guarded_by``, ``pt_guarded_by``, ``acquired_after``, ``acquired_before`` - attributes now support referencing struct members in C. The arguments are also - now late parsed when ``-fexperimental-late-parse-attributes`` is passed like - for ``counted_by``. - -- Introduced new function type attributes ``[[clang::nonblocking]]``, ``[[clang::nonallocating]]``, - ``[[clang::blocking]]``, and ``[[clang::allocating]]``, with GNU-style variants as well. - The attributes declare constraints about a function's behavior pertaining to blocking and - heap memory allocation. Improvements to Clang's diagnostics ----------------------------------- -- Clang now emits an error instead of a warning for ``-Wundefined-internal`` - when compiling with `-pedantic-errors` to conform to the C standard - -- Clang now applies syntax highlighting to the code snippets it - prints. - -- Clang now diagnoses member template declarations with multiple declarators. - -- Clang now diagnoses use of the ``template`` keyword after declarative nested - name specifiers. - -- The ``-Wshorten-64-to-32`` diagnostic is now grouped under ``-Wimplicit-int-conversion`` instead - of ``-Wconversion``. Fixes #GH69444. - -- Clang now uses thousand separators when printing large numbers in integer overflow diagnostics. - Fixes #GH80939. - -- Clang now diagnoses friend declarations with an ``enum`` elaborated-type-specifier in language modes after C++98. - -- Added diagnostics for C11 keywords being incompatible with language standards - before C11, under a new warning group: ``-Wpre-c11-compat``. - -- Now diagnoses an enumeration constant whose value is larger than can be - represented by ``unsigned long long``, which can happen with a large constant - using the ``wb`` or ``uwb`` suffix. The maximal underlying type is currently - ``unsigned long long``, but this behavior may change in the future when Clang - implements - `WG14 N3029 `_. - (#GH69352). - -- Clang now diagnoses extraneous template parameter lists as a language extension. - -- Clang now diagnoses declarative nested name specifiers that name alias templates. - -- Clang now diagnoses lambda function expressions being implicitly cast to boolean values, under ``-Wpointer-bool-conversion``. - Fixes #GH82512. - -- Clang now provides improved warnings for the ``cleanup`` attribute to detect misuse scenarios, - such as attempting to call ``free`` on an unallocated object. Fixes #GH79443. - -- Clang no longer warns when the ``bitand`` operator is used with boolean - operands, distinguishing it from potential typographical errors or unintended - bitwise operations. Fixes #GH77601. - -- Clang now correctly diagnoses no arguments to a variadic macro parameter as a C23/C++20 extension. - Fixes #GH84495. - -- Clang no longer emits a ``-Wexit-time destructors`` warning on static variables explicitly - annotated with the ``clang::always_destroy`` attribute. - Fixes #GH68686, #GH86486 - -- ``-Wmicrosoft``, ``-Wgnu``, or ``-pedantic`` is now required to diagnose C99 - flexible array members in a union or alone in a struct. Fixes GH#84565. - -- Clang now no longer diagnoses type definitions in ``offsetof`` in C23 mode. - Fixes #GH83658. - -- New ``-Wformat-signedness`` diagnostic that warn if the format string requires an - unsigned argument and the argument is signed and vice versa. - -- Clang now emits ``unused argument`` warning when the -fmodule-output flag is used - with an input that is not of type c++-module. - -- Clang emits a ``-Wreturn-stack-address`` warning if a function returns a pointer or - reference to a struct literal. Fixes #GH8678 - -- Clang emits a ``-Wunused-but-set-variable`` warning on C++ variables whose declaration - (with initializer) entirely consist the condition expression of a if/while/for construct - but are not actually used in the body of the if/while/for construct. Fixes #GH41447 - -- Clang emits a diagnostic when a tentative array definition is assumed to have - a single element, but that diagnostic was never given a diagnostic group. - Added the ``-Wtentative-definition-array`` warning group to cover this. - Fixes #GH87766 - -- Clang now uses the correct type-parameter-key (``class`` or ``typename``) when printing - template template parameter declarations. - -- Clang now diagnoses requires expressions with explicit object parameters. - -- Clang now looks up members of the current instantiation in the template definition context - if the current instantiation has no dependent base classes. - - .. code-block:: c++ - - template - struct A { - int f() { - return this->x; // error: no member named 'x' in 'A' - } - }; - -- Clang emits a ``-Wparentheses`` warning for expressions with consecutive comparisons like ``x < y < z``. - Fixes #GH20456. - -- Clang no longer emits a "declared here" note for a builtin function that has no declaration in source. - Fixes #GH93369. - -- Clang now has an improved error message for captures that refer to a class member. - Fixes #GH94764. - -- Clang now diagnoses unsupported class declarations for ``std::initializer_list`` when they are - used rather than when they are needed for constant evaluation or when code is generated for them. - The check is now stricter to prevent crashes for some unsupported declarations (Fixes #GH95495). - -- Clang now diagnoses dangling cases where a pointer is assigned to a temporary - that will be destroyed at the end of the full expression. - Fixes #GH54492. - -- Clang now shows implicit deduction guides when diagnosing overload resolution failure. #GH92393. - -- Clang no longer emits a "no previous prototype" warning for Win32 entry points under ``-Wmissing-prototypes``. - Fixes #GH94366. - -- For the ARM target, calling an interrupt handler from another function is now an error. #GH95359. - -- Clang now diagnoses integer constant expressions that are folded to a constant value as an extension in more circumstances. Fixes #GH59863 - -- Clang now diagnoses dangling assignments for pointer-like objects (annotated with `[[gsl::Pointer]]`) under `-Wdangling-assignment-gsl` (off by default) - Fixes #GH63310. - -- Clang now diagnoses uses of alias templates with a deprecated attribute. (Fixes #GH18236). - - .. code-block:: c++ - - template - struct NoAttr { - }; - - template - using UsingWithAttr __attribute__((deprecated)) = NoAttr; - - UsingWithAttr objUsingWA; // warning: 'UsingWithAttr' is deprecated Improvements to Clang's time-trace ---------------------------------- -- Clang now specifies that using ``auto`` in a lambda parameter is a C++14 extension when - appropriate. (`#46059: `_). - -- Clang now adds source file infomation for template instantiations as ``event["args"]["filename"]``. This - added behind an option ``-ftime-trace-verbose``. This is expected to increase the size of trace by 2-3 times. - Improvements to Coverage Mapping -------------------------------- -- Macros defined in system headers are not expanded in coverage - mapping. Conditional expressions in system header macros are no - longer taken into account for branch coverage. They can be included - with ``-mllvm -system-headers-coverage``. - (`#78920: `_) -- MC/DC Coverage has been improved. - (`#82448: `_) - - - The maximum number of conditions is no longer limited to 6. See - `this ` for - more details. - Bug Fixes in This Version ------------------------- -- Clang's ``-Wundefined-func-template`` no longer warns on pure virtual - functions. (#GH74016) - -- Fixed missing warnings when comparing mismatched enumeration constants - in C (#GH29217) - -- Clang now accepts elaborated-type-specifiers that explicitly specialize - a member class template for an implicit instantiation of a class template. - -- Fixed missing warnings when doing bool-like conversions in C23 (#GH79435). -- Clang's ``-Wshadow`` no longer warns when an init-capture is named the same as - a class field unless the lambda can capture this. - Fixes (#GH71976) - -- Clang now accepts qualified partial/explicit specializations of variable templates that - are not nominable in the lookup context of the specialization. - -- Clang now doesn't produce false-positive warning `-Wconstant-logical-operand` - for logical operators in C23. - Fixes (#GH64356). - -- ``__is_trivially_relocatable`` no longer returns ``false`` for volatile-qualified types. - Fixes (#GH77091). - -- Clang no longer produces a false-positive `-Wunused-variable` warning - for variables created through copy initialization having side-effects in C++17 and later. - Fixes (#GH64356) (#GH79518). - -- Fix value of predefined macro ``__FUNCTION__`` in MSVC compatibility mode. - Fixes (#GH66114). - -- Clang now emits errors for explicit specializations/instatiations of lambda call - operator. - Fixes (#GH83267). - -- Fix crash on ill-formed partial specialization with CRTP. - Fixes (#GH89374). - -- Clang now correctly generates overloads for bit-precise integer types for - builtin operators in C++. Fixes #GH82998. - -- Fix crash when destructor definition is preceded with an equals sign. - Fixes (#GH89544). - -- When performing mixed arithmetic between ``_Complex`` floating-point types and integers, - Clang now correctly promotes the integer to its corresponding real floating-point - type only rather than to the complex type (e.g. ``_Complex float / int`` is now evaluated - as ``_Complex float / float`` rather than ``_Complex float / _Complex float``), as mandated - by the C standard. This significantly improves codegen of `*` and `/` especially. - Fixes #GH31205. - -- Fixes an assertion failure on invalid code when trying to define member - functions in lambdas. - -- Fixed a regression in CTAD that a friend declaration that befriends itself may cause - incorrect constraint substitution. (#GH86769). - -- Fixed an assertion failure on invalid InitListExpr in C89 mode (#GH88008). - -- Fixed missing destructor calls when we branch from middle of an expression. - This could happen through a branch in stmt-expr or in an expression containing a coroutine - suspension. Fixes (#GH63818) (#GH88478). - -- Clang will no longer diagnose an erroneous non-dependent ``switch`` condition - during instantiation, and instead will only diagnose it once, during checking - of the function template. - -- Clang now allows the value of unroll count to be zero in ``#pragma GCC unroll`` and ``#pragma unroll``. - The values of 0 and 1 block any unrolling of the loop. This keeps the same behavior with GCC. - Fixes (`#88624 `_). - -- Clang will no longer emit a duplicate -Wunused-value warning for an expression - `(A, B)` which evaluates to glvalue `B` that can be converted to non ODR-use. (#GH45783) - -- Clang now correctly disallows VLA type compound literals, e.g. ``(int[size]){}``, - as the C standard mandates. (#GH89835) - -- ``__is_array`` and ``__is_bounded_array`` no longer return ``true`` for - zero-sized arrays. Fixes (#GH54705). - -- Correctly reject declarations where a statement is required in C. - Fixes #GH92775 - -- Fixed `static_cast` to array of unknown bound. Fixes (#GH62863). - -- Fixed Clang crashing when failing to perform some C++ Initialization Sequences. (#GH98102) - -- ``__is_trivially_equality_comparable`` no longer returns true for types which - have a constrained defaulted comparison operator (#GH89293). - -- Fixed Clang from generating dangling StringRefs when deserializing Exprs & Stmts (#GH98667) - -- ``__has_unique_object_representations`` correctly handles arrays of unknown bounds of - types by ensuring they are complete and instantiating them if needed. Fixes (#GH95311). - -- ``typeof_unqual`` now properly removes type qualifiers from arrays and their element types. (#GH92667) - -- Fixed an assertion failure when a template non-type parameter contains - an invalid expression. Bug Fixes to Compiler Builtins ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -- Fix crash when atomic builtins are called with pointer to zero-size struct (#GH90330) - -- Clang now allows pointee types of atomic builtin arguments to be complete template types - that was not instantiated elsewhere. - Bug Fixes to Attribute Support ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Bug Fixes to C++ Support ^^^^^^^^^^^^^^^^^^^^^^^^ -- Fix crash when calling the constructor of an invalid class. - (#GH10518) (#GH67914) (#GH78388) -- Fix crash when using lifetimebound attribute in function with trailing return. - (#GH73619) -- Addressed an issue where constraints involving injected class types are perceived - distinct from its specialization types. (#GH56482) -- Fixed a bug where variables referenced by requires-clauses inside - nested generic lambdas were not properly injected into the constraint scope. (#GH73418) -- Fixed a crash where substituting into a requires-expression that refers to function - parameters during the equivalence determination of two constraint expressions. - (#GH74447) -- Fixed deducing auto& from const int in template parameters of partial - specializations. (#GH77189) -- Fix for crash when using a erroneous type in a return statement. - (#GH63244) (#GH79745) -- Fixed an out-of-bounds error caused by building a recovery expression for ill-formed - function calls while substituting into constraints. (#GH58548) -- Fix incorrect code generation caused by the object argument - of ``static operator()`` and ``static operator[]`` calls not being evaluated. (#GH67976) -- Fix crash and diagnostic with const qualified member operator new. - Fixes (#GH79748) -- Fixed a crash where substituting into a requires-expression that involves parameter packs - during the equivalence determination of two constraint expressions. (#GH72557) -- Fix a crash when specializing an out-of-line member function with a default - parameter where we did an incorrect specialization of the initialization of - the default parameter. (#GH68490) -- Fix a crash when trying to call a varargs function that also has an explicit object parameter. - Fixes (#GH80971) -- Reject explicit object parameters on `new` and `delete` operators. (#GH82249) -- Fix a crash when trying to call a varargs function that also has an explicit object parameter. (#GH80971) -- Fixed a bug where abbreviated function templates would append their invented template parameters to - an empty template parameter lists. -- Fix parsing of abominable function types inside type traits. Fixes #GH77585 -- Clang now classifies aggregate initialization in C++17 and newer as constant - or non-constant more accurately. Previously, only a subset of the initializer - elements were considered, misclassifying some initializers as constant. Partially fixes - #GH80510. -- Clang now ignores top-level cv-qualifiers on function parameters in template partial orderings. (#GH75404) -- No longer reject valid use of the ``_Alignas`` specifier when declaring a - local variable, which is supported as a C11 extension in C++. Previously, it - was only accepted at namespace scope but not at local function scope. -- Clang no longer tries to call consteval constructors at runtime when they appear in a member initializer. (#GH82154) -- Fix crash when using an immediate-escalated function at global scope. (#GH82258) -- Correctly immediate-escalate lambda conversion functions. (#GH82258) -- Fixed an issue where template parameters of a nested abbreviated generic lambda within - a requires-clause lie at the same depth as those of the surrounding lambda. This, - in turn, results in the wrong template argument substitution during constraint checking. - (#GH78524) -- Clang no longer instantiates the exception specification of discarded candidate function - templates when determining the primary template of an explicit specialization. -- Fixed a crash in Microsoft compatibility mode where unqualified dependent base class - lookup searches the bases of an incomplete class. -- Fix a crash when an unresolved overload set is encountered on the RHS of a ``.*`` operator. - (#GH53815) -- In ``__restrict``-qualified member functions, attach ``__restrict`` to the pointer type of - ``this`` rather than the pointee type. - Fixes (#GH82941), (#GH42411) and (#GH18121). -- Clang now properly reports supported C++11 attributes when using - ``__has_cpp_attribute`` and parses attributes with arguments in C++03 (#GH82995) -- Clang now properly diagnoses missing 'default' template arguments on a variety - of templates. Previously we were diagnosing on any non-function template - instead of only on class, alias, and variable templates, as last updated by - CWG2032. Fixes (#GH83461) -- Fixed an issue where an attribute on a declarator would cause the attribute to - be destructed prematurely. This fixes a pair of Chromium that were brought to - our attention by an attempt to fix in (#GH77703). Fixes (#GH83385). -- Fix evaluation of some immediate calls in default arguments. - Fixes (#GH80630) -- Fixed an issue where the ``RequiresExprBody`` was involved in the lambda dependency - calculation. (#GH56556), (#GH82849). -- Fix a bug where overload resolution falsely reported an ambiguity when it was comparing - a member-function against a non member function or a member-function with an - explicit object parameter against a member function with no explicit object parameter - when one of the function had more specialized templates. Fixes #GH82509 and #GH74494 -- Clang now supports direct lambda calls inside of a type alias template declarations. - This addresses (#GH70601), (#GH76674), (#GH79555), (#GH81145) and (#GH82104). -- Allow access to a public template alias declaration that refers to friend's - private nested type. (#GH25708). -- Fixed a crash in constant evaluation when trying to access a - captured ``this`` pointer in a lambda with an explicit object parameter. - Fixes (#GH80997) -- Fix an issue where missing set friend declaration in template class instantiation. - Fixes (#GH84368). -- Fixed a crash while checking constraints of a trailing requires-expression of a lambda, that the - expression references to an entity declared outside of the lambda. (#GH64808) -- Clang's __builtin_bit_cast will now produce a constant value for records with empty bases. See: - (#GH82383) -- Fix a crash when instantiating a lambda that captures ``this`` outside of its context. Fixes (#GH85343). -- Fix an issue where a namespace alias could be defined using a qualified name (all name components - following the first `::` were ignored). -- Fix an out-of-bounds crash when checking the validity of template partial specializations. (part of #GH86757). -- Fix an issue caused by not handling invalid cases when substituting into the parameter mapping of a constraint. Fixes (#GH86757). -- Fixed a bug that prevented member function templates of class templates declared with a deduced return type - from being explicitly specialized for a given implicit instantiation of the class template. -- Fixed a crash when ``this`` is used in a dependent class scope function template specialization - that instantiates to a static member function. -- Fix crash when inheriting from a cv-qualified type. Fixes #GH35603 -- Fix a crash when the using enum declaration uses an anonymous enumeration. Fixes (#GH86790). -- Handled an edge case in ``getFullyPackExpandedSize`` so that we now avoid a false-positive diagnostic. (#GH84220) -- Clang now correctly tracks type dependence of by-value captures in lambdas with an explicit - object parameter. - Fixes (#GH70604), (#GH79754), (#GH84163), (#GH84425), (#GH86054), (#GH86398), and (#GH86399). -- Fix a crash when deducing ``auto`` from an invalid dereference (#GH88329). -- Fix a crash in requires expression with templated base class member function. Fixes (#GH84020). -- Fix a crash caused by defined struct in a type alias template when the structure - has fields with dependent type. Fixes (#GH75221). -- Fix the Itanium mangling of lambdas defined in a member of a local class (#GH88906) -- Fixed a crash when trying to evaluate a user-defined ``static_assert`` message whose ``size()`` - function returns a large or negative value. Fixes (#GH89407). -- Fixed a use-after-free bug in parsing of type constraints with default arguments that involve lambdas. (#GH67235) -- Fixed bug in which the body of a consteval lambda within a template was not parsed as within an - immediate function context. -- Fix CTAD for ``std::initializer_list``. This allows ``std::initializer_list{1, 2, 3}`` to be deduced as - ``std::initializer_list`` as intended. -- Fix a bug on template partial specialization whose template parameter is `decltype(auto)`. -- Fix a bug on template partial specialization with issue on deduction of nontype template parameter - whose type is `decltype(auto)`. Fixes (#GH68885). -- Clang now correctly treats the noexcept-specifier of a friend function to be a complete-class context. -- Fix an assertion failure when parsing an invalid members of an anonymous class. (#GH85447) -- Fixed a misuse of ``UnresolvedLookupExpr`` for ill-formed templated expressions. Fixes (#GH48673), (#GH63243) - and (#GH88832). -- Clang now defers all substitution into the exception specification of a function template specialization - until the noexcept-specifier is instantiated. -- Fix a crash when an implicitly declared ``operator==`` function with a trailing requires-clause has its - constraints compared to that of another declaration. -- Fix a bug where explicit specializations of member functions/function templates would have substitution - performed incorrectly when checking constraints. Fixes (#GH90349). -- Clang now allows constrained member functions to be explicitly specialized for an implicit instantiation - of a class template. -- Fix a C++23 bug in implementation of P2564R3 which evaluates immediate invocations in place - within initializers for variables that are usable in constant expressions or are constant - initialized, rather than evaluating them as a part of the larger manifestly constant evaluated - expression. -- Fix a bug in access control checking due to dealyed checking of friend declaration. Fixes (#GH12361). -- Correctly treat the compound statement of an ``if consteval`` as an immediate context. Fixes (#GH91509). -- When partial ordering alias templates against template template parameters, - allow pack expansions when the alias has a fixed-size parameter list. Fixes (#GH62529). -- Clang now ignores template parameters only used within the exception specification of candidate function - templates during partial ordering when deducing template arguments from a function declaration or when - taking the address of a function template. -- Fix a bug with checking constrained non-type template parameters for equivalence. Fixes (#GH77377). -- Fix a bug where the last argument was not considered when considering the most viable function for - explicit object argument member functions. Fixes (#GH92188). -- Fix a C++11 crash when a non-const non-static member function is defined out-of-line with - the ``constexpr`` specifier. Fixes (#GH61004). -- Clang no longer transforms dependent qualified names into implicit class member access expressions - until it can be determined whether the name is that of a non-static member. -- Clang now correctly diagnoses when the current instantiation is used as an incomplete base class. -- Clang no longer treats ``constexpr`` class scope function template specializations of non-static members - as implicitly ``const`` in language modes after C++11. -- Fixed a crash when trying to emit captures in a lambda call operator with an explicit object - parameter that is called on a derived type of the lambda. - Fixes (#GH87210), (GH89541). -- Clang no longer tries to check if an expression is immediate-escalating in an unevaluated context. - Fixes (#GH91308). -- Fix a crash caused by a regression in the handling of ``source_location`` - in dependent contexts. Fixes (#GH92680). -- Fixed a crash when diagnosing failed conversions involving template parameter - packs. (#GH93076) -- Fixed a regression introduced in Clang 18 causing a static function overloading a non-static function - with the same parameters not to be diagnosed. (Fixes #GH93456). -- Clang now diagnoses unexpanded parameter packs in attributes. (Fixes #GH93269). -- Clang now allows ``@$``` in raw string literals. Fixes (#GH93130). -- Fix an assertion failure when checking invalid ``this`` usage in the wrong context. (Fixes #GH91536). -- Clang no longer models dependent NTTP arguments as ``TemplateParamObjectDecl`` s. Fixes (#GH84052). -- Fix incorrect merging of modules which contain using declarations which shadow - other declarations. This could manifest as ODR checker false positives. - Fixes (`#80252 `_) -- Fix a regression introduced in Clang 18 causing incorrect overload resolution in the presence of functions only - differering by their constraints when only one of these function was variadic. -- Fix a crash when a variable is captured by a block nested inside a lambda. (Fixes #GH93625). -- Fixed a type constraint substitution issue involving a generic lambda expression. (#GH93821) -- Fix a crash caused by improper use of ``__array_extent``. (#GH80474) -- Fixed several bugs in capturing variables within unevaluated contexts. (#GH63845), (#GH67260), (#GH69307), - (#GH88081), (#GH89496), (#GH90669), (#GH91633) and (#GH97453). -- Fixed a crash in constraint instantiation under nested lambdas with dependent parameters. -- Fixed handling of brace ellison when building deduction guides. (#GH64625), (#GH83368). -- Fixed a failed assertion when attempting to convert an integer representing the difference - between the addresses of two labels (a GNU extension) to a pointer within a constant expression. (#GH95366). -- Fix immediate escalation bugs in the presence of dependent call arguments. (#GH94935) -- Clang now diagnoses explicit specializations with storage class specifiers in all contexts. -- Fix an assertion failure caused by parsing a lambda used as a default argument for the value of a - forward-declared class. (#GH93512). -- Fixed a bug in access checking inside return-type-requirement of compound requirements. (#GH93788). -- Fixed an assertion failure about invalid conversion when calling lambda. (#GH96205). -- Fixed a bug where the first operand of binary ``operator&`` would be transformed as if it was the operand - of the address of operator. (#GH97483). -- Fixed an assertion failure about a constant expression which is a known integer but is not - evaluated to an integer. (#GH96670). -- Fixed a bug where references to lambda capture inside a ``noexcept`` specifier were not correctly - instantiated. (#GH95735). -- Fixed a CTAD substitution bug involving type aliases that reference outer template parameters. (#GH94614). -- Clang now correctly handles unexpanded packs in the template parameter list of a generic lambda expression - (#GH48937) -- Fix a crash when parsing an invalid type-requirement in a requires expression. (#GH51868) -- Fix parsing of built-in type-traits such as ``__is_pointer`` in libstdc++ headers. (#GH95598) -- Fixed failed assertion when resolving context of defaulted comparison method outside of struct. (#GH96043). -- Clang now diagnoses explicit object parameters in member pointers and other contexts where they should not appear. - Fixes (#GH85992). -- Fixed a crash-on-invalid bug involving extraneous template parameter with concept substitution. (#GH73885) -- Fixed assertion failure by skipping the analysis of an invalid field declaration. (#GH99868) - Bug Fixes to AST Handling ^^^^^^^^^^^^^^^^^^^^^^^^^ -- Clang now properly preserves ``FoundDecls`` within a ``ConceptReference``. (#GH82628) -- The presence of the ``typename`` keyword is now stored in ``TemplateTemplateParmDecl``. -- Fixed malformed AST generated for anonymous union access in templates. (#GH90842) -- Improved preservation of qualifiers and sugar in `TemplateNames`, including - template keyword. Miscellaneous Bug Fixes ^^^^^^^^^^^^^^^^^^^^^^^ -- Fixed an infinite recursion in ASTImporter, on return type declared inside - body of C++11 lambda without trailing return (#GH68775). -- Fixed declaration name source location of instantiated function definitions (GH71161). -- Improve diagnostic output to print an expression instead of 'no argument` when comparing Values as template arguments. - Miscellaneous Clang Crashes Fixed ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -- Do not attempt to dump the layout of dependent types or invalid declarations - when ``-fdump-record-layouts-complete`` is passed. Fixes #GH83684. -- Unhandled StructuralValues in the template differ (#GH93068). - OpenACC Specific Changes ------------------------ @@ -1142,144 +149,36 @@ AMDGPU Support X86 Support ^^^^^^^^^^^ -- Remove knl/knm specific ISA supports: AVX512PF, AVX512ER, PREFETCHWT1 -- Support has been removed for the AMD "3DNow!" instruction-set. - Neither modern AMD CPUs, nor any Intel CPUs implement these - instructions, and they were never widely used. - - * The options ``-m3dnow`` and ``-m3dnowa`` are no longer honored, and will emit a warning if used. - * The macros ``__3dNOW__`` and ``__3dNOW_A__`` are no longer ever set by the compiler. - * The header ```` is deprecated, and emits a warning if included. - * The 3dNow intrinsic functions have been removed: ``_m_femms``, - ``_m_pavgusb``, ``_m_pf2id``, ``_m_pfacc``, ``_m_pfadd``, - ``_m_pfcmpeq``, ``_m_pfcmpge``, ``_m_pfcmpgt``, ``_m_pfmax``, - ``_m_pfmin``, ``_m_pfmul``, ``_m_pfrcp``, ``_m_pfrcpit1``, - ``_m_pfrcpit2``, ``_m_pfrsqrt``, ``_m_pfrsqrtit1``, ``_m_pfsub``, - ``_m_pfsubr``, ``_m_pi2fd``, ``_m_pmulhrw``, ``_m_pf2iw``, - ``_m_pfnacc``, ``_m_pfpnacc``, ``_m_pi2fw``, ``_m_pswapdsf``, - ``_m_pswapdsi``. - * The compiler builtins corresponding to each of the above - intrinsics have also been removed (``__builtin_ia32_femms``, and so on). - * "3DNow!" instructions remain supported in assembly code, including - inside inline-assembly. - Arm and AArch64 Support ^^^^^^^^^^^^^^^^^^^^^^^ -- ARMv7+ targets now default to allowing unaligned access, except Armv6-M, and - Armv8-M without the Main Extension. Baremetal targets should check that the - new default will work with their system configurations, since it requires - that SCTLR.A is 0, SCTLR.U is 1, and that the memory in question is - configured as "normal" memory. This brings Clang in-line with the default - settings for GCC and Arm Compiler. Aside from making Clang align with other - compilers, changing the default brings major performance and code size - improvements for most targets. We have not changed the default behavior for - ARMv6, but may revisit that decision in the future. Users can restore the old - behavior with -m[no-]unaligned-access. -- An alias identifier (rdma) has been added for targeting the AArch64 - Architecture Extension which uses Rounding Doubling Multiply Accumulate - instructions (rdm). The identifier is available on the command line as - a feature modifier for -march and -mcpu as well as via target attributes - like ``target_version`` or ``target_clones``. -- Support has been added for the following processors (-mcpu identifiers in parenthesis): - * Arm Cortex-R52+ (cortex-r52plus). - * Arm Cortex-R82AE (cortex-r82ae). - * Arm Cortex-A78AE (cortex-a78ae). - * Arm Cortex-A520AE (cortex-a520ae). - * Arm Cortex-A720AE (cortex-a720ae). - * Arm Cortex-A725 (cortex-a725). - * Arm Cortex-X925 (cortex-x925). - * Arm Neoverse-N3 (neoverse-n3). - * Arm Neoverse-V3 (neoverse-v3). - * Arm Neoverse-V3AE (neoverse-v3ae). - Android Support ^^^^^^^^^^^^^^^ Windows Support ^^^^^^^^^^^^^^^ -- The clang-cl ``/Ot`` compiler option ("optimize for speed", also implied by - ``/O2``) now maps to clang's ``-O3`` optimizataztion level instead of ``-O2``. - Users who prefer the old behavior can use ``clang-cl /Ot /clang:-O2 ...``. - -- Clang-cl now supports function targets with intrinsic headers. This allows - for runtime feature detection of intrinsics. Previously under clang-cl - ``immintrin.h`` and similar intrinsic headers would only include the intrinsics - if building with that feature enabled at compile time, e.g. ``avxintrin.h`` - would only be included if AVX was enabled at compile time. This was done to work - around include times from MSVC STL including ``intrin.h`` under clang-cl. - Clang-cl now provides ``intrin0.h`` for MSVC STL and therefore all intrinsic - features without requiring enablement at compile time. Fixes #GH53520 - -- Improved compile times with MSVC STL. MSVC provides ``intrin0.h`` which is a - header that only includes intrinsics that are used by MSVC STL to avoid the - use of ``intrin.h``. MSVC STL when compiled under clang uses ``intrin.h`` - instead. Clang-cl now provides ``intrin0.h`` for the same compiler throughput - purposes as MSVC. Clang-cl also provides ``yvals_core.h`` to redefine - ``_STL_INTRIN_HEADER`` to expand to ``intrin0.h`` instead of ``intrin.h``. - This also means that if all intrinsic features are enabled at compile time - including STL headers will no longer slow down compile times since ``intrin.h`` - is not included from MSVC STL. - -- When the target triple is `*-windows-msvc` strict aliasing is now disabled by default - to ensure compatibility with msvc. Previously strict aliasing was only disabled if the - driver mode was cl. - LoongArch Support ^^^^^^^^^^^^^^^^^ -- ``-march=la64v1.0`` and ``-march=la64v1.1`` have been added to select the - ``la64v1.0`` and ``la64v1.1`` architecture respectively. And ``-march=la664`` - is added to support the ``la664`` micro-architecture. -- The 128-bits SIMD extension (``LSX``) is enabled by default. -- ``-msimd=`` has beend added to select the SIMD extension(s) to be enabled. -- Predefined macros ``__loongarch_simd_width`` and ``__loongarch_frecipe`` are - added. - RISC-V Support ^^^^^^^^^^^^^^ -- ``__attribute__((rvv_vector_bits(N)))`` is now supported for RVV vbool*_t types. -- Profile names in ``-march`` option are now supported. -- Passing empty structs/unions as arguments in C++ is now handled correctly. The behavior is similar to GCC's. -- ``-m[no-]scalar-strict-align`` and ``-m[no-]vector-strict-align`` options have - been added to give separate control of whether scalar or vector misaligned - accesses may be created. ``-m[no-]strict-align`` applies to both scalar and - vector. - CUDA/HIP Language Changes ^^^^^^^^^^^^^^^^^^^^^^^^^ -- PTX is no longer included by default when compiling for CUDA. Using - ``--cuda-include-ptx=all`` will return the old behavior. - CUDA Support ^^^^^^^^^^^^ -- Clang now supports CUDA SDK up to 12.5 AIX Support ^^^^^^^^^^^ -- Introduced the ``-maix-small-local-dynamic-tls`` option to produce a faster - access sequence for local-dynamic TLS variables where the offset from the TLS - base is encoded as an immediate operand. - This access sequence is not used for TLS variables larger than 32KB, and is - currently only supported on 64-bit mode. - NetBSD Support ^^^^^^^^^^^^^^ -- Removed support for building NetBSD/i386 6.x or older binaries. - WebAssembly Support ^^^^^^^^^^^^^^^^^^^ -The -mcpu=generic configuration now enables multivalue and reference-types. -These proposals are standardized and available in all major engines. Enabling -multivalue here only enables the language feature but does not turn on the -multivalue ABI (this enables non-ABI uses of multivalue, like exnref). - AVR Support ^^^^^^^^^^^ @@ -1289,138 +188,44 @@ DWARF Support in Clang Floating Point Support in Clang ------------------------------- -- Add ``__builtin__fmaf16`` builtin for floating point types. - Fixed Point Support in Clang ---------------------------- -- Support fixed point precision macros according to ``7.18a.3`` of - `ISO/IEC TR 18037:2008 `_. - AST Matchers ------------ -- Fixes a long-standing performance issue in parent map generation for - ancestry-based matchers such as ``hasParent`` and ``hasAncestor``, making - them significantly faster. -- ``isInStdNamespace`` now supports Decl declared with ``extern "C++"``. -- Add ``isExplicitObjectMemberFunction``. -- Fixed ``forEachArgumentWithParam`` and ``forEachArgumentWithParamType`` to - not skip the explicit object parameter for operator calls. -- Fixed captureVars assertion failure if not capturesVariables. (#GH76425) -- ``forCallable`` now properly preserves binding on successful match. (#GH89657) - clang-format ------------ -- ``AlwaysBreakTemplateDeclarations`` is deprecated and renamed to - ``BreakTemplateDeclarations``. -- ``AlwaysBreakAfterReturnType`` is deprecated and renamed to - ``BreakAfterReturnType``. -- Handles Java switch expressions. -- Adds ``AllowShortCaseExpressionOnASingleLine`` option. -- Adds ``AlignCaseArrows`` suboption to ``AlignConsecutiveShortCaseStatements``. -- Adds ``LeftWithLastLine`` suboption to ``AlignEscapedNewlines``. -- Adds ``KeepEmptyLines`` option to deprecate ``KeepEmptyLinesAtEOF`` - and ``KeepEmptyLinesAtTheStartOfBlocks``. -- Add ``ExceptDoubleParentheses`` sub-option for ``SpacesInParensOptions`` - to override addition of spaces between multiple, non-redundant parentheses - similar to the rules used for ``RemoveParentheses``. - libclang -------- -- ``clang_getSpellingLocation`` now correctly resolves macro expansions; that - is, it returns the spelling location instead of the expansion location. - Static Analyzer --------------- New features ^^^^^^^^^^^^ -- The attribute ``[[clang::suppress]]`` can now be applied to declarations. - (#GH80371) - -- Support C++23 static operator calls. (#GH84972) - Crash and bug fixes ^^^^^^^^^^^^^^^^^^^ -- Fixed crashing on loops if the loop variable was declared in switch blocks - but not under any case blocks if ``unroll-loops=true`` analyzer config is - set. (#GH68819) - -- Fixed a crash in ``security.cert.env.InvalidPtr`` checker when accidentally - matched user-defined ``strerror`` and similar library functions. (#GH88181) - -- Fixed a crash when storing through an address that refers to the address of - a label. (#GH89185) - -- Z3 crosschecking (aka. Z3 refutation) is now bounded, and can't consume - more total time than the eymbolic execution itself. (#GH97298) - -- ``std::addressof``, ``std::as_const``, ``std::forward``, - ``std::forward_like``, ``std::move``, ``std::move_if_noexcept``, are now - modeled just like their builtin counterpart. (#GH94193) - Improvements ^^^^^^^^^^^^ Moved checkers ^^^^^^^^^^^^^^ -- Moved ``alpha.cplusplus.ArrayDelete`` out of the ``alpha`` package - to ``cplusplus.ArrayDelete``. (#GH83985) - `Documentation `__. - -- Moved ``alpha.unix.Stream`` out of the ``alpha`` package to - ``unix.Stream``. (#GH89247) - `Documentation `__. - -- Moved ``alpha.unix.BlockInCriticalSection`` out of the ``alpha`` package to - ``unix.BlockInCriticalSection``. (#GH93815) - `Documentation `__. - -- Moved ``alpha.security.cert.pos.34c`` out of the ``alpha`` package to - ``security.PutenvStackArray``. (#GH92424, #GH93815) - `Documentation `__. - -- Moved ``alpha.core.SizeofPtr`` into ``clang-tidy`` - ``bugprone-sizeof-expression``. (#GH95118, #GH94356) - `Documentation `__. - .. _release-notes-sanitizers: Sanitizers ---------- -- ``-fsanitize=signed-integer-overflow`` now instruments signed arithmetic even - when ``-fwrapv`` is enabled. Previously, only division checks were enabled. - - Users with ``-fwrapv`` as well as a sanitizer group like - ``-fsanitize=undefined`` or ``-fsanitize=integer`` enabled may want to - manually disable potentially noisy signed integer overflow checks with - ``-fno-sanitize=signed-integer-overflow`` - -- ``-fsanitize=cfi -fsanitize-cfi-cross-dso`` (cross-DSO CFI instrumentation) - now generates the ``__cfi_check`` function with proper target-specific - attributes, for example allowing unwind table generation. - Python Binding Changes ---------------------- -- Exposed `CXRewriter` API as `class Rewriter`. -- Add some missing kinds from Index.h (CursorKind: 149-156, 272-320, 420-437. - TemplateArgumentKind: 5-9. TypeKind: 161-175 and 178). -- Add support for retrieving binary operator information through - Cursor.binary_operator(). - OpenMP Support -------------- -- Added support for the `[[omp::assume]]` attribute. - Additional Information ====================== diff --git a/libcxx/docs/ReleaseNotes.rst b/libcxx/docs/ReleaseNotes.rst index 5d98ade8d9918..0454cfa3dbc36 100644 --- a/libcxx/docs/ReleaseNotes.rst +++ b/libcxx/docs/ReleaseNotes.rst @@ -1,4 +1,4 @@ -.. include:: ReleaseNotes/19.rst +.. include:: ReleaseNotes/20.rst .. Make sure to reference the non-live release notes in a toctree to avoid Sphinx errors. .. toctree:: diff --git a/lld/docs/ReleaseNotes.rst b/lld/docs/ReleaseNotes.rst index 09081e421e905..6f60efd87c975 100644 --- a/lld/docs/ReleaseNotes.rst +++ b/lld/docs/ReleaseNotes.rst @@ -26,70 +26,6 @@ Non-comprehensive list of changes in this release ELF Improvements ---------------- -* ``EI_OSABI`` in the output is now inferred from input object files. - (`#97144 `_) -* ``--compress-sections ={none,zlib,zstd}[:level]`` is added to compress - matched output sections without the ``SHF_ALLOC`` flag. - (`#84855 `_) - (`#90567 `_) -* The default compression level for zlib is now independent of linker - optimization level (``Z_BEST_SPEED``). -* zstd compression parallelism no longer requires ``ZSTD_MULITHREAD`` build. -* ``GNU_PROPERTY_AARCH64_FEATURE_PAUTH`` notes, ``R_AARCH64_AUTH_ABS64`` and - ``R_AARCH64_AUTH_RELATIVE`` relocations are now supported. - (`#72714 `_) -* ``--no-allow-shlib-undefined`` now rejects non-exported definitions in the - ``def-hidden.so ref.so`` case. - (`#86777 `_) -* ``--debug-names`` is added to create a merged ``.debug_names`` index - from input ``.debug_names`` sections. Type units are not handled yet. - (`#86508 `_) -* ``--enable-non-contiguous-regions`` option allows automatically packing input - sections into memory regions by automatically spilling to later matches if a - region would overflow. This reduces the toil of manually packing regions - (typical for embedded). It also makes full LTO feasible in such cases, since - IR merging currently prevents the linker script from referring to input - files. (`#90007 `_) -* ``--default-script`/``-dT`` is implemented to specify a default script that is processed - if ``--script``/``-T`` is not specified. - (`#89327 `_) -* ``--force-group-allocation`` is implemented to discard ``SHT_GROUP`` sections - and combine relocation sections if their relocated section group members are - placed to the same output section. - (`#94704 `_) -* ``--build-id`` now defaults to generating a 20-byte digest ("sha1") instead - of 8-byte ("fast"). This improves compatibility with RPM packaging tools. - (`#93943 `_) -* ``-z lrodata-after-bss`` is implemented to place ``.lrodata`` after ``.bss``. - (`#81224 `_) -* ``--export-dynamic`` no longer creates dynamic sections for ``-no-pie`` static linking. -* ``--lto-emit-asm`` is now added as the canonical spelling of ``--plugin-opt=emit-llvm``. -* ``--lto-emit-llvm`` now uses the pre-codegen module. - (`#97480 `_) -* When AArch64 PAuth is enabled, ``-z pack-relative-relocs`` now encodes ``R_AARCH64_AUTH_RELATIVE`` relocations in ``.rela.auth.dyn``. - (`#96496 `_) -* ``-z gcs`` and ``-z gcs-report`` are now supported for AArch64 Guarded Control Stack extension. -* ``-r`` now forces ``-Bstatic``. -* Thumb2 PLT is now supported for Cortex-M processors. - (`#93644 `_) -* ``DW_EH_sdata4`` of addresses larger than 0x80000000 is now supported for MIPS32. - (`#92438 `_) -* Certain unknown section types are rejected. - (`#85173 `_) -* ``PROVIDE(lhs = rhs) PROVIDE(rhs = ...)``, ``lhs`` is now defined only if ``rhs`` is needed. - (`#74771 `_) - (`#87530 `_) -* ``OUTPUT_FORMAT(binary)`` is now supported. - (`#98837 `_) -* ``NOCROSSREFS`` and ``NOCRFOSSREFS_TO`` commands now supported to prohibit - cross references between certain output sections. - (`#98773 `_) -* Orphan placement is refined to prefer the last similar section when its rank <= orphan's rank. - (`#94099 `_) - Non-alloc orphan sections are now placed at the end. - (`#94519 `_) -* R_X86_64_REX_GOTPCRELX of the addq form is no longer incorrectly optimized when the address is larger than 0x80000000. - Breaking changes ---------------- @@ -102,11 +38,6 @@ MinGW Improvements MachO Improvements ------------------ -* Chained fixups are now enabled by default when targeting macOS 13.0, - iOS 13.4, tvOS 14.0, watchOS 7.0, and visionOS 1.0 or later. - They can be disabled with the `-no_fixup_chains` flag. - (`#99255 `_) - WebAssembly Improvements ------------------------ diff --git a/llvm/docs/ReleaseNotes.rst b/llvm/docs/ReleaseNotes.rst index a81caa160883d..46fa2a74450e1 100644 --- a/llvm/docs/ReleaseNotes.rst +++ b/llvm/docs/ReleaseNotes.rst @@ -47,110 +47,30 @@ Non-comprehensive list of changes in this release Update on required toolchains to build LLVM ------------------------------------------- -* The minimum Python version has been raised from 3.6 to 3.8 across all of LLVM. - This enables the use of many new Python features, aligning more closely with - modern Python best practices, and improves CI maintainability - See `#78828 `_ for more info. - Changes to the LLVM IR ---------------------- -* Added Memory Model Relaxation Annotations (MMRAs). -* Added ``nusw`` and ``nuw`` flags to ``getelementptr`` instruction. -* Renamed ``llvm.experimental.vector.reverse`` intrinsic to ``llvm.vector.reverse``. -* Renamed ``llvm.experimental.vector.splice`` intrinsic to ``llvm.vector.splice``. -* Renamed ``llvm.experimental.vector.interleave2`` intrinsic to ``llvm.vector.interleave2``. -* Renamed ``llvm.experimental.vector.deinterleave2`` intrinsic to ``llvm.vector.deinterleave2``. -* The constant expression variants of the following instructions have been - removed: - - * ``icmp`` - * ``fcmp`` - * ``shl`` -* LLVM has switched from using debug intrinsics in textual IR to using debug - records by default. Details of the change and instructions on how to update - any downstream tools and tests can be found in the `migration docs - `_. -* Semantics of MC/DC intrinsics have been changed. - - * ``llvm.instprof.mcdc.parameters``: 3rd argument has been changed - from bytes to bits. - * ``llvm.instprof.mcdc.condbitmap.update``: Removed. - * ``llvm.instprof.mcdc.tvbitmap.update``: 3rd argument has been - removed. The next argument has been changed from byte index to bit - index. -* Added ``llvm.experimental.vector.compress`` intrinsic. - Changes to LLVM infrastructure ------------------------------ Changes to building LLVM ------------------------ -* LLVM now has rpmalloc version 1.4.5 in-tree, as a replacement C allocator for - hosted toolchains. This supports several host platforms such as Mac or Unix, - however currently only the Windows 64-bit LLVM release uses it. - This has a great benefit in terms of build times on Windows when using ThinLTO - linking, especially on machines with lots of cores, to an order of magnitude - or more. Clang compilation is also improved. Please see some build timings in - (`#91862 `_) - For more information, refer to the **LLVM_ENABLE_RPMALLOC** option in `CMake variables `_. - -* The ``LLVM_ENABLE_TERMINFO`` flag has been removed. LLVM no longer depends on - terminfo and now always uses the ``TERM`` environment variable for color - support autodetection. - Changes to TableGen ------------------- -- We can define type aliases via new keyword ``deftype``. - Changes to Interprocedural Optimizations ---------------------------------------- Changes to the AArch64 Backend ------------------------------ -* Added support for Cortex-R82AE, Cortex-A78AE, Cortex-A520AE, Cortex-A720AE, - Cortex-A725, Cortex-X925, Neoverse-N3, Neoverse-V3 and Neoverse-V3AE CPUs. - -* ``-mbranch-protection=standard`` now enables FEAT_PAuth_LR by - default when the feature is enabled. The new behaviour results - in ``standard`` being equal to ``bti+pac-ret+pc`` when ``+pauth-lr`` - is passed as part of ``-mcpu=`` options. - -* SVE and SVE2 have been moved to the default extensions list for ARMv9.0, - making them optional per the Arm ARM. Existing v9.0+ CPUs in the backend that - support these extensions continue to have these features enabled by default - when specified via ``-march=`` or an ``-mcpu=`` that supports them. The - attribute ``"target-features"="+v9a"`` no longer implies ``"+sve"`` and - ``"+sve2"`` respectively. - Changes to the AMDGPU Backend ----------------------------- -* Implemented the ``llvm.get.fpenv`` and ``llvm.set.fpenv`` intrinsics. -* Added ``!amdgpu.no.fine.grained.memory`` and - ``!amdgpu.no.remote.memory`` metadata to control atomic behavior. - -* Implemented :ref:`llvm.get.rounding ` and :ref:`llvm.set.rounding ` - -* Removed ``llvm.amdgcn.ds.fadd``, ``llvm.amdgcn.ds.fmin`` and - ``llvm.amdgcn.ds.fmax`` intrinsics. Users should use the - :ref:`atomicrmw ` instruction with `fadd`, `fmin` and - `fmax` with addrspace(3) instead. - -* AMDGPUAttributor is no longer run as part of the codegen pass - pipeline. It is expected to run as part of the middle end - optimizations. - Changes to the ARM Backend -------------------------- -* Added support for Cortex-R52+ CPU. -* FEAT_F32MM is no longer activated by default when using `+sve` on v8.6-A or greater. The feature is still available and can be used by adding `+f32mm` to the command line options. -* armv8-r now implies only fp-armv8d16sp, rather than neon and full fp-armv8. These features are still included by default for cortex-r52. The default cpu for armv8-r is now "generic", for compatibility with variants that do not include neon, fp64, and d32. - Changes to the AVR Backend -------------------------- @@ -163,17 +83,6 @@ Changes to the Hexagon Backend Changes to the LoongArch Backend -------------------------------- -* i32 is now a native type in the datalayout string. This enables - LoopStrengthReduce for loops with i32 induction variables, among other - optimizations. -* Codegen support is added for TLS Desciptor. -* Interleaved vectorization and vector shuffle are supported on LoongArch and - the experimental feature ``auto-vec`` is removed. -* Allow ``f16`` codegen with expansion to libcalls. -* Clarify that emulated TLS is not supported. -* A codegen issue for ``bstrins.w`` is fixed on loongarch32. -* Assorted codegen improvements. - Changes to the MIPS Backend --------------------------- @@ -183,36 +92,6 @@ Changes to the PowerPC Backend Changes to the RISC-V Backend ----------------------------- -* Added full support for the experimental Zabha (Byte and - Halfword Atomic Memory Operations) extension. -* Added assembler/disassembler support for the experimenatl Zalasr - (Load-Acquire and Store-Release) extension. -* The names of the majority of the S-prefixed (supervisor-level) extension - names in the RISC-V profiles specification are now recognised. -* Codegen support was added for the Zimop (May-Be-Operations) extension. -* The experimental Ssnpm, Smnpm, Smmpm, Sspm, and Supm 1.0.0 Pointer Masking extensions are supported. -* The experimental Ssqosid extension is supported. -* Added the CSR names from the Resumable Non-Maskable Interrupts (Smrnmi) extension. -* llvm-objdump now prints disassembled opcode bytes in groups of 2 or 4 bytes to - match GNU objdump. The bytes within the groups are in big endian order. -* Added smstateen extension to -march. CSR names for smstateen were already supported. -* Zaamo and Zalrsc are no longer experimental. -* Processors that enable post reg-alloc scheduling (PostMachineScheduler) by default should use the `UsePostRAScheduler` subtarget feature. Setting `PostRAScheduler = 1` in the scheduler model will have no effect on the enabling of the PostMachineScheduler. -* Zabha is no longer experimental. -* B (the collection of the Zba, Zbb, Zbs extensions) is supported. -* Added smcdeleg, ssccfg, smcsrind, and sscsrind extensions to -march. -* ``-mcpu=syntacore-scr3-rv32`` and ``-mcpu=syntacore-scr3-rv64`` were added. -* The default atomics mapping was changed to emit an additional trailing fence - for sequentially consistent stores, offering compatibility with a future - mapping using load-acquire and store-release instructions while remaining - fully compatible with objects produced prior to this change. The mapping - (ABI) used is recorded as an ELF attribute. -* Ztso is no longer experimental. -* The WCH / Nanjing Qinheng Microelectronics QingKe "XW" compressed opcodes are - supported under the name "Xwchc". -* ``-mcpu=native`` now detects available features with hwprobe (RISC-V Hardware Probing Interface) on Linux 6.4 or later. -* The version of Zicfilp/Zicfiss is updated to 1.0. - Changes to the WebAssembly Backend ---------------------------------- @@ -222,12 +101,6 @@ Changes to the Windows Target Changes to the X86 Backend -------------------------- -- Removed knl/knm specific ISA intrinsics: AVX512PF, AVX512ER, PREFETCHWT1, - while assembly encoding/decoding supports are kept. - -- Removed ``3DNow!``-specific ISA intrinsics and codegen support. The ``3dnow`` and ``3dnowa`` target features are no longer supported. The intrinsics ``llvm.x86.3dnow.*``, ``llvm.x86.3dnowa.*``, and ``llvm.x86.mmx.femms`` have been removed. Assembly encoding/decoding for the corresponding instructions remains supported. - - Changes to the OCaml bindings ----------------------------- @@ -237,104 +110,6 @@ Changes to the Python bindings Changes to the C API -------------------- -* Added ``LLVMGetBlockAddressFunction`` and ``LLVMGetBlockAddressBasicBlock`` - functions for accessing the values in a blockaddress constant. - -* Added ``LLVMConstStringInContext2`` function, which better matches the C++ - API by using ``size_t`` for string length. Deprecated ``LLVMConstStringInContext``. - -* Added the following functions for accessing a function's prefix data: - - * ``LLVMHasPrefixData`` - * ``LLVMGetPrefixData`` - * ``LLVMSetPrefixData`` - -* Added the following functions for accessing a function's prologue data: - - * ``LLVMHasPrologueData`` - * ``LLVMGetPrologueData`` - * ``LLVMSetPrologueData`` - -* Deprecated ``LLVMConstNUWNeg`` and ``LLVMBuildNUWNeg``. - -* Added ``LLVMAtomicRMWBinOpUIncWrap`` and ``LLVMAtomicRMWBinOpUDecWrap`` to - ``LLVMAtomicRMWBinOp`` enum for AtomicRMW instructions. - -* Added ``LLVMCreateConstantRangeAttribute`` function for creating ConstantRange Attributes. - -* Added the following functions for creating and accessing data for CallBr instructions: - - * ``LLVMBuildCallBr`` - * ``LLVMGetCallBrDefaultDest`` - * ``LLVMGetCallBrNumIndirectDests`` - * ``LLVMGetCallBrIndirectDest`` - -* The following functions for creating constant expressions have been removed, - because the underlying constant expressions are no longer supported. Instead, - an instruction should be created using the ``LLVMBuildXYZ`` APIs, which will - constant fold the operands if possible and create an instruction otherwise: - - * ``LLVMConstICmp`` - * ``LLVMConstFCmp`` - * ``LLVMConstShl`` - -**Note:** The following changes are due to the removal of the debug info -intrinsics from LLVM and to the introduction of debug records into LLVM. -They are described in detail in the `debug info migration guide `_. - -* Added the following functions to insert before the indicated instruction but - after any attached debug records. - - * ``LLVMPositionBuilderBeforeDbgRecords`` - * ``LLVMPositionBuilderBeforeInstrAndDbgRecords`` - - Same as ``LLVMPositionBuilder`` and ``LLVMPositionBuilderBefore`` except the - insertion position is set to before the debug records that precede the target - instruction. ``LLVMPositionBuilder`` and ``LLVMPositionBuilderBefore`` are - unchanged. - -* Added the following functions to get/set the new non-instruction debug info format. - They will be deprecated in the future and they are just a transition aid. - - * ``LLVMIsNewDbgInfoFormat`` - * ``LLVMSetIsNewDbgInfoFormat`` - -* Added the following functions to insert a debug record (new debug info format). - - * ``LLVMDIBuilderInsertDeclareRecordBefore`` - * ``LLVMDIBuilderInsertDeclareRecordAtEnd`` - * ``LLVMDIBuilderInsertDbgValueRecordBefore`` - * ``LLVMDIBuilderInsertDbgValueRecordAtEnd`` - -* Deleted the following functions that inserted a debug intrinsic (old debug info format). - - * ``LLVMDIBuilderInsertDeclareBefore`` - * ``LLVMDIBuilderInsertDeclareAtEnd`` - * ``LLVMDIBuilderInsertDbgValueBefore`` - * ``LLVMDIBuilderInsertDbgValueAtEnd`` - -* Added the following functions for accessing a Target Extension Type's data: - - * ``LLVMGetTargetExtTypeName`` - * ``LLVMGetTargetExtTypeNumTypeParams``/``LLVMGetTargetExtTypeTypeParam`` - * ``LLVMGetTargetExtTypeNumIntParams``/``LLVMGetTargetExtTypeIntParam`` - -* Added the following functions for accessing/setting the no-wrap flags for a - GetElementPtr instruction: - - * ``LLVMBuildGEPWithNoWrapFlags`` - * ``LLVMConstGEPWithNoWrapFlags`` - * ``LLVMGEPGetNoWrapFlags`` - * ``LLVMGEPSetNoWrapFlags`` - -* Added the following functions for creating and accessing data for ConstantPtrAuth constants: - - * ``LLVMConstantPtrAuth`` - * ``LLVMGetConstantPtrAuthPointer`` - * ``LLVMGetConstantPtrAuthKey`` - * ``LLVMGetConstantPtrAuthDiscriminator`` - * ``LLVMGetConstantPtrAuthAddrDiscriminator`` - Changes to the CodeGen infrastructure ------------------------------------- @@ -344,106 +119,14 @@ Changes to the Metadata Info Changes to the Debug Info --------------------------------- -* LLVM has switched from using debug intrinsics internally to using debug - records by default. This should happen transparently when using the DIBuilder - to construct debug variable information, but will require changes for any code - that interacts with debug intrinsics directly. Debug intrinsics will only be - supported on a best-effort basis from here onwards; for more information, see - the `migration docs `_. - -* When emitting DWARF v2 and not in strict DWARF mode, LLVM will now add - a ``DW_AT_type`` to instances of ``DW_TAG_enumeration_type``. This is actually - a DWARF v3 feature which tells tools what the enum's underlying type is. - Emitting this for v2 as well will help users who have to build binaries with - DWARF v2 but are using tools that understand newer DWARF standards. Older - tools will ignore it. (`#98335 `_) - Changes to the LLVM tools --------------------------------- -* llvm-nm and llvm-objdump can now print symbol information from linked - WebAssembly binaries, using information from exports or the "name" - section for functions, globals and data segments. Symbol addresses and sizes - are printed as offsets in the file, allowing for binary size analysis. Wasm - files using reference types and GC are also supported (but also only for - functions, globals, and data, and only for listing symbols and names). - -* llvm-ar now utilizes LLVM_DEFAULT_TARGET_TRIPLE to determine the archive format - if it's not specified with the ``--format`` argument and cannot be inferred from - input files. - -* llvm-ar now allows specifying COFF archive format with ``--format`` argument - and uses it by default for COFF targets. - -* llvm-ranlib now supports ``-V`` as an alias for ``--version``. - ``-v`` (``--verbose`` in llvm-ar) has been removed. - (`#87661 `_) - -* llvm-objcopy now supports ``--set-symbol-visibility`` and - ``--set-symbols-visibility`` options for ELF input to change the - visibility of symbols. - -* llvm-objcopy now supports ``--skip-symbol`` and ``--skip-symbols`` options - for ELF input to skip the specified symbols when executing other options - that can change a symbol's name, binding or visibility. - -* llvm-objcopy now supports ``--compress-sections`` to compress or decompress - arbitrary sections not within a segment. - (`#85036 `_.) - -* llvm-profgen now supports COFF+DWARF binaries. This enables Sample-based PGO - on Windows using Intel VTune's SEP. For details on usage, see the `end-user - documentation for SPGO - `_. - -* llvm-readelf's ``-r`` output for RELR has been improved. - (`#89162 `_) - ``--raw-relr`` has been removed. - -* llvm-mca now aborts by default if it is given bad input where previously it - would continue. Additionally, it can now continue when it encounters - instructions which lack scheduling information. The behaviour can be - controlled by the newly introduced - ``--skip-unsupported-instructions=``, as - documented in ``--help`` output and the command guide. (`#90474 - `_) - -* llvm-readobj's LLVM output format for ELF core files has been changed. - Similarly, the JSON format has been fixed for this case. The NT_FILE note - now has a map for the mapped files. (`#92835 - `_). - -* llvm-cov now generates HTML report with JavaScript code to allow simple - jumping between uncovered parts (lines/regions/branches) of code - using buttons on top-right corner of the page or using keys (L/R/B or - jumping in reverse direction with shift+L/R/B). (`#95662 - `_). - -* llvm-objcopy now verifies format of ``.note`` sections for ELF input. This can - be disabled by ``--no-verify-note-sections``. (`#90458 - `). Changes to LLDB --------------------------------- -* Register field information is now provided on AArch64 FreeBSD for live - processes and core files (previously only provided on AArch64 Linux). - -* Register field information can now include enums to represent field - values. Enums have been added for ``fpcr.RMode`` and ``mte_ctrl.TCF`` - for AArch64 targets:: - - (lldb) register read fpcr - fpcr = 0x00000000 - = (AHP = 0, DN = 0, FZ = 0, RMode = RN, <...>) - - If you need to know the values of the enum, these can be found in - the output of ``register info`` for the same register. - Changes to BOLT --------------------------------- -* Now supports ``--match-profile-with-function-hash`` to match profiled and - binary functions with exact hash, allowing for the matching of renamed but - identical functions. Changes to Sanitizers --------------------- diff --git a/openmp/docs/ReleaseNotes.rst b/openmp/docs/ReleaseNotes.rst index df944c3be68de..d4a4b1a99f781 100644 --- a/openmp/docs/ReleaseNotes.rst +++ b/openmp/docs/ReleaseNotes.rst @@ -1,5 +1,5 @@ =========================== -OpenMP 19.0.0 Release Notes +OpenMP 20.0.0 Release Notes =========================== diff --git a/pstl/docs/ReleaseNotes.rst b/pstl/docs/ReleaseNotes.rst index 342b2eafc2f51..941b029ecd674 100644 --- a/pstl/docs/ReleaseNotes.rst +++ b/pstl/docs/ReleaseNotes.rst @@ -1,5 +1,5 @@ ======================================= -PSTL 19.0.0 (In-Progress) Release Notes +PSTL 20.0.0 (In-Progress) Release Notes ======================================= .. contents::