summaryrefslogtreecommitdiffstats
path: root/clang/docs/ReleaseNotes.rst
diff options
context:
space:
mode:
Diffstat (limited to 'clang/docs/ReleaseNotes.rst')
-rw-r--r--clang/docs/ReleaseNotes.rst262
1 files changed, 0 insertions, 262 deletions
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 5cc53e9ec27b..fa8860ba2027 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -52,70 +52,21 @@ Major New Features
Improvements to Clang's diagnostics
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-- -Wbitwise-instead-of-logical (part of -Wbool-operation) warns about use of bitwise operators with boolean operands which have side effects.
-
-- Added diagnostic groups to control diagnostics for attribute extensions by
- adding groups ``-Wc++N-attribute-extensions`` (where ``N`` is the standard
- release being diagnosed against). These new groups are automatically implied
- when passing ``-Wc++N-extensions``. Resolves PR33518.
-
-- Support ``-Wdeclaration-after-statement`` with C99 and later standards, and
- not just C89, matching GCC's behaviour. A notable usecase is supporting style
- guides that forbid mixing declarations and code, but want to move to newer C
- standards.
-
Non-comprehensive list of changes in this release
-------------------------------------------------
-- Maximum _ExtInt size was decreased from 16,777,215 bits to 8,388,608 bits.
- Motivation for this was discussed in PR51829.
-- Configuration file syntax extended with ``<CFGDIR>`` token. This expands to
- the base path of the current config file. See :ref:`configuration-files` for
- details.
-
New Compiler Flags
------------------
-- Clang plugin arguments can now be passed through the compiler driver via
- ``-fplugin-arg-pluginname-arg``, similar to GCC's ``-fplugin-arg``.
-- The ``-mno-bti-at-return-twice`` flag will make sure a BTI instruction won't
- be added after a setjmp or possible other return-twice construct (ARM backend
- only).
-
Deprecated Compiler Flags
-------------------------
-- -Wweak-template-vtables has been deprecated and no longer has any effect. The
- flag will be removed in the next release.
-
Modified Compiler Flags
-----------------------
-- Support has been added for the following processors (``-mcpu`` identifiers in parentheses):
-
- - RISC-V SiFive E20 (``sifive-e20``).
- - RISC-V SiFive E21 (``sifive-e21``).
- - RISC-V SiFive E24 (``sifive-e24``).
- - RISC-V SiFive E34 (``sifive-e34``).
- - RISC-V SiFive S21 (``sifive-s21``).
- - RISC-V SiFive S51 (``sifive-s51``).
- - RISC-V SiFive S54 (``sifive-s54``).
- - RISC-V SiFive S76 (``sifive-s76``).
-
-- Support has been added for the following architectures (``-march`` identifiers in parentheses):
-
- - Armv9-A (``armv9-a``).
- - Armv9.1-A (``armv9.1-a``).
- - Armv9.2-A (``armv9.2-a``).
-
Removed Compiler Flags
-------------------------
-- ``-fno-experimental-new-pass-manager`` has been removed.
- ``-flegacy-pass-manager`` can be used as a makeshift,
- Using the legacy pass manager for the optimization pipeline was deprecated in
- 13.0.0 and will be removed after 14.0.0.
-
New Pragmas in Clang
--------------------
@@ -124,83 +75,12 @@ New Pragmas in Clang
Attribute Changes in Clang
--------------------------
-- Attributes loaded as clang plugins which are sensitive to LangOpts must
- now override ``acceptsLangOpts`` instead of ``diagLangOpts``.
- Returning false will produce a generic "attribute ignored" diagnostic, as
- with clang's built-in attributes.
- If plugins want to provide richer diagnostics, they can do so when the
- attribute is handled instead, e.g. in ``handleDeclAttribute``.
- (This was changed in order to better support attributes in code completion).
-
-- __has_cpp_attribute, __has_c_attribute, __has_attribute, and __has_declspec
- will now macro expand their argument. This causes a change in behavior for
- code using ``__has_cpp_attribute(__clang__::attr)`` (and same for
- ``__has_c_attribute``) where it would previously expand to ``0`` for all
- attributes, but will now issue an error due to the expansion of the
- predefined ``__clang__`` macro.
-
Windows Support
---------------
-- An MSVC compatibility workaround for C++ operator names was removed. As a
- result, the ``<query.h>`` Windows SDK header may not compile out of the box.
- Users should use a recent SDK and pass ``-DQUERY_H_RESTRICTION_PERMISSIVE``
- or pass ``/permissive`` to disable C++ operator names altogether. See
- `PR42427 <https://llvm.org/pr42427>` for more info.
-
-- Add support for MSVC-compatible ``/hotpatch`` flag in clang-cl, and equivalent
- -cc1 flag ``-fms-hotpatch``. Along with the linker flag ``/functionpadmin``
- this creates executable images suitable for runtime code patching. This flag
- is only required for x86/x64 targets; ARM/ARM64 simply needs the linker
- ``/functionpadmin``.
-
- With this addition, clang-cl can be used in live code patching scenarios,
- along with tools such as Live++ or Recode. Microsoft Edit and Continue isn't
- currently supported.
-
C Language Changes in Clang
---------------------------
-- The value of ``__STDC_VERSION__`` has been bumped to ``202000L`` when passing
- ``-std=c2x`` so that it can be distinguished from C17 mode. This value is
- expected to change again when C23 is published.
-- Wide multi-characters literals such as ``L'ab'`` that would previously be interpreted as ``L'b'``
- are now ill-formed in all language modes. The motivation for this change is outlined in
- `P2362 <wg21.link/P2362>`_.
-- Support for ``__attribute__((error("")))`` and
- ``__attribute__((warning("")))`` function attributes have been added.
-- The maximum allowed alignment has been increased from 2^29 to 2^32.
-- Clang now supports the ``_BitInt(N)`` family of bit-precise integer types
- from C23. This type was previously exposed as ``_ExtInt(N)``, which is now a
- deprecated alias for ``_BitInt(N)`` (so diagnostics will mention ``_BitInt``
- even if source uses ``_ExtInt``). ``_BitInt(N)`` and ``_ExtInt(N)`` are the
- same types in all respects beyond spelling and the deprecation warning.
- ``_BitInt(N)`` is supported as an extension in older C modes and in all C++
- modes. Note: the ABI for ``_BitInt(N)`` is still in the process of being
- stabilized, so this type should not yet be used in interfaces that require
- ABI stability. The maximum width supported by Clang can be obtained from the
- ``BITINT_MAXWIDTH`` macro in ``<limits.h>``. Currently, Clang supports bit
- widths <= 128 because backends are not yet able to cope with some math
- operations (like division) on wider integer types. See
- `PR44994 <https://github.com/llvm/llvm-project/issues/44994>`_ for more
- information.
-- When using ``asm goto`` with outputs whose constraint modifier is ``"+"``, we
- now change the numbering of the labels to occur after hidden tied inputs for
- better compatibility with GCC. For better portability between different
- compilers and versions, symbolic references rather than numbered references
- should be preferred. See
- `this thread <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103640>` for more
- info.
-
-- Implemented `WG14 N2412 <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2412.pdf>`_,
- which adds ``*_WIDTH`` macros to limits.h and stdint.h to report the bit
- width of various integer datatypes.
-
-- The ``ATOMIC_VAR_INIT`` macro from ``<stdatomic.h>`` is now diagnosed as
- deprecated in C17 and later. The diagnostic can be disabled by defining the
- ``_CLANG_DISABLE_CRT_DEPRECATION_WARNINGS`` macro prior to including the
- header.
-
C++ Language Changes in Clang
-----------------------------
@@ -209,27 +89,12 @@ C++ Language Changes in Clang
C++20 Feature Support
^^^^^^^^^^^^^^^^^^^^^
-- The ``ATOMIC_VAR_INIT`` and ``ATOMIC_FLAG_INIT`` macros from the C standard
- library ``<stdatomic.h>`` header are now diagnosed as deprecated in C++20 and
- later. Note, the behavior is specific to the inclusion of ``<stdatomic.h>``
- in C++ code; the STL ``<atomic>`` header also controls the behavior of these
- macros and is not affected by these changes. The ``<stdatomic.h>`` diagnostic
- can be disabled by defining the ``_CLANG_DISABLE_CRT_DEPRECATION_WARNINGS``
- macro prior to including the header.
-
-
C++2b Feature Support
^^^^^^^^^^^^^^^^^^^^^
-- Implemented `P1938R3: if consteval <https://wg21.link/P1938R3>`_.
-- Implemented `P2360R0: Extend init-statement to allow alias-declaration <https://wg21.link/P2360R0>`_.
-
CUDA Language Changes in Clang
------------------------------
-- Clang now supports CUDA versions up to 11.5.
-- Default GPU architecture has been changed from sm_20 to sm_35.
-
Objective-C Language Changes in Clang
-------------------------------------
@@ -241,25 +106,9 @@ OpenCL C Language Changes in Clang
ABI Changes in Clang
--------------------
-- The ``_ExtInt(N)`` extension has been standardized in C23 as ``_BitInt(N)``.
- The mangling of this type in C++ has accordingly changed: under the Microsoft
- ABI it is now mangled using the ``_BitInt`` spelling, and under the Itanium ABI
- it is now mangled using a dedicated production. Note: the ABI for ``_BitInt(N)``
- is still in the process of being stabilized, so this type should not yet be
- used in interfaces that require ABI stability.
-
-- GCC doesn't pack non-POD members in packed structs unless the packed
- attribute is also specified on the member. Clang historically did perform
- such packing. Clang now matches the gcc behavior (except on Darwin and PS4).
- You can switch back to the old ABI behavior with the flag:
- ``-fclang-abi-compat=13.0``.
-
OpenMP Support in Clang
-----------------------
-- ``clang-nvlink-wrapper`` tool introduced to support linking of cubin files archived in an archive. See :doc:`ClangNvlinkWrapper`.
-- ``clang-linker-wrapper`` tool introduced to support linking using a new OpenMP target offloading method. See :doc:`ClangLinkerWrapper`.
-
CUDA Support in Clang
---------------------
@@ -268,138 +117,27 @@ CUDA Support in Clang
X86 Support in Clang
--------------------
-- Support for ``AVX512-FP16`` instructions has been added.
-
DWARF Support in Clang
----------------------
-- The default DWARF version has increased from DWARFv4 to DWARFv5. You can opt
- back in to the old behavior with ``-gdwarf-4`` or ``-fdebug-default-version=4``.
- Some platforms (Darwin, Android, and SCE for instance) already opt out of this
- version bump as is suitable for the platform
-
Arm and AArch64 Support in Clang
--------------------------------
-- Support has been added for the following processors (command-line identifiers in parentheses):
- - Arm Cortex-A510 (``cortex-a510``)
- - Arm Cortex-X2 (``cortex-x2``)
- - Arm Cortex-A710 (``cortex-A710``)
-
-- The -mtune flag is no longer ignored for AArch64. It is now possible to
- tune code generation for a particular CPU with -mtune without setting any
- architectural features. For example, compiling with
- "-mcpu=generic -mtune=cortex-a57" will not enable any Cortex-A57 specific
- architecture features, but will enable certain optimizations specific to
- Cortex-A57 CPUs and enable the use of a more accurate scheduling model.
-
-- The --aarch64-none-elf target now uses the BareMetal driver rather than the
- GNU driver. Programs that depend on clang invoking GCC as the linker driver
- should use GCC as the linker in the build system.
-
-- The ``-mbranch-protection`` flag will now also work for the ARM backend.
-
-- The ``attribute((target("branch-protection=...)))`` attributes will now also
- work for the ARM backend.
-
Floating Point Support in Clang
-------------------------------
-- The default setting of FP contraction (FMA) is now -ffp-contract=on (for
- languages other than CUDA/HIP) even when optimization is off. Previously,
- the default behavior was equivalent to -ffp-contract=off (-ffp-contract
- was not set).
- Related to this, the switch -ffp-model=precise now implies -ffp-contract=on
- rather than -ffp-contract=fast, and the documentation of these features has
- been clarified. Previously, the documentation claimed that -ffp-model=precise
- was the default, but this was incorrect because the precise model implied
- -ffp-contract=fast, whereas the (now corrected) default behavior is
- -ffp-contract=on.
- -ffp-model=precise is now exactly the default mode of the compiler.
-- -fstrict-float-cast-overflow no longer has target specific behavior. Clang
- will saturate towards the smallest and largest representable integer values.
- NaNs will be converted to zero.
Internal API Changes
--------------------
-- A new sugar ``Type`` AST node represents types accessed via a C++ using
- declaration. Given code ``using std::error_code; error_code x;``, ``x`` has
- a ``UsingType`` which desugars to the previous ``RecordType``.
-
Build System Changes
--------------------
-- Linux distros can specify ``-DCLANG_DEFAULT_PIE_ON_LINUX=On`` to use ``-fPIE`` and
- ``-pie`` by default. This matches GCC installations on many Linux distros
- (configured with ``--enable-default-pie``).
- (`D113372 <https://reviews.llvm.org/D113372>`_)
-
AST Matchers
------------
-- ``TypeLoc`` AST Matchers are now available. These matchers provide helpful
- utilities for matching ``TypeLoc`` nodes, such as the ``pointerTypeLoc``
- matcher or the ``hasReturnTypeLoc`` matcher. The addition of these matchers
- was made possible by changes to the handling of ``TypeLoc`` nodes that
- allows them to enjoy the same static type checking as other AST node kinds.
-- ``LambdaCapture`` AST Matchers are now available. These matchers allow for
- the binding of ``LambdaCapture`` nodes. The ``LambdaCapture`` matchers added
- include the ``lambdaCapture`` node matcher, the ``capturesVar`` traversal
- matcher, and ``capturesThis`` narrowing matcher.
-- The ``hasAnyCapture`` matcher now only accepts an inner matcher of type
- ``Matcher<LambdaCapture>``. The matcher originally accepted an inner matcher
- of type ``Matcher<CXXThisExpr>`` or ``Matcher<VarDecl>``.
-- The ``usingType`` matcher is now available and needed to refer to types that
- are referred to via using C++ using declarations.
- The associated ``UsingShadowDecl`` can be matched using ``throughUsingDecl``
- and the underlying ``Type`` with ``hasUnderlyingType``.
- ``hasDeclaration`` continues to see through the alias and apply to the
- underlying type.
-- Added the ``isConsteval`` matcher to match ``consteval`` function
- declarations as well as `if consteval` and `if ! consteval` statements.
-- Added the ``isConstinit`` matcher to match ``constinit`` variable
- declarations.
-
clang-format
------------
-- Option ``AllowShortEnumsOnASingleLine: false`` has been improved, it now
- correctly places the opening brace according to ``BraceWrapping.AfterEnum``.
-
-- Option ``AlignAfterOpenBracket: BlockIndent`` has been added. If set, it will
- always break after an open bracket, if the parameters don't fit on a single
- line. Closing brackets will be placed on a new line.
-
-- Option ``QualifierAlignment`` has been added in order to auto-arrange the
- positioning of specifiers/qualifiers
- `const` `volatile` `static` `inline` `constexpr` `restrict`
- in variable and parameter declarations to be either ``Right`` aligned
- or ``Left`` aligned or ``Custom`` using ``QualifierOrder``.
-
-- Option ``QualifierOrder`` has been added to allow the order
- `const` `volatile` `static` `inline` `constexpr` `restrict`
- to be controlled relative to the `type`.
-
-- Option ``RemoveBracesLLVM`` has been added to remove optional braces of
- control statements for the LLVM style.
-
-- Option ``SeparateDefinitionBlocks`` has been added to insert or remove empty
- lines between definition blocks including functions, classes, structs, enums,
- and namespaces.
-
-- Add a ``Custom`` style to ``SpaceBeforeParens``, to better configure the
- space before parentheses. The custom options can be set using
- ``SpaceBeforeParensOptions``.
-
-- The command line argument `-style=<string>` has been extended so that a specific
- format file at location <format_file_path> can be selected. This is supported
- via the syntax: `-style=file:<format_file_path>`.
-
-- Improved C++20 Modules and Coroutines support.
-
-- Option ``AfterOverloadedOperator`` has been added in ``SpaceBeforeParensOptions``
- to allow space between overloaded operator and opening parentheses.
-
libclang
--------