forked from OSchip/llvm-project
Bump the trunk major version to 15
This commit is contained in:
parent
db01b123d0
commit
a2601c9887
|
@ -51,136 +51,33 @@ Improvements to clangd
|
||||||
Inlay hints
|
Inlay hints
|
||||||
^^^^^^^^^^^
|
^^^^^^^^^^^
|
||||||
|
|
||||||
- This feature provides texutal hints interleaved with the code,
|
|
||||||
like parameter names, deduced types and designated initializers.
|
|
||||||
|
|
||||||
- The `clangd/inlayHints <https://clangd.llvm.org/extensions#inlay-hints>`_
|
|
||||||
LSP extension is now documented, and both position and range.
|
|
||||||
|
|
||||||
- Inlay hints are now on-by-default in clangd, if the client supports and
|
|
||||||
exposes them. (`vscode-clangd
|
|
||||||
<https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd>`_
|
|
||||||
does so). The ``-inlay-hints`` flag has been removed.
|
|
||||||
|
|
||||||
- Inlay hints can be `disabled or configured
|
|
||||||
<https://clangd.llvm.org/config#inlayhints>`_ in the config file.
|
|
||||||
|
|
||||||
Diagnostics
|
Diagnostics
|
||||||
^^^^^^^^^^^
|
^^^^^^^^^^^
|
||||||
|
|
||||||
- `Unused #include
|
|
||||||
<https://clangd.llvm.org/design/include-cleaner>`_ diagnostics are available.
|
|
||||||
These are off by default, and can be turned on through the
|
|
||||||
`Diagnostics.UnusedIncludes <https://clangd.llvm.org/config#unusedincludes>`_
|
|
||||||
config option.
|
|
||||||
|
|
||||||
- ``Deprecated`` and ``Unnecessary`` tags from LSP 3.15 are set on
|
|
||||||
``-Wdeprecated`` and ``-Wunused`` diagnostics. Clients may display these
|
|
||||||
in a specialized way.
|
|
||||||
|
|
||||||
- clangd suggests inserting includes to fix problems in more cases:
|
|
||||||
|
|
||||||
- calling unknown functions in C, even when an implicit declaration is
|
|
||||||
inferred.
|
|
||||||
- incomplete types (some additional cases).
|
|
||||||
- various diagnostics that specify "include <foo.h>" in their text.
|
|
||||||
|
|
||||||
- The "populate switch" action is more reliably offered as a fix for
|
|
||||||
``-Wswitch`` warnings, and works with C enums.
|
|
||||||
|
|
||||||
- Warnings specified by ``ExtraArgs: -W...`` flags in ``.clang-tidy`` config
|
|
||||||
files are now produced.
|
|
||||||
|
|
||||||
Semantic Highlighting
|
Semantic Highlighting
|
||||||
^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
- ``virtual`` modifier for method names
|
|
||||||
- ``usedAsMutableReference`` modifier for function parameters
|
|
||||||
- Lambda captures now marked as local variables.
|
|
||||||
|
|
||||||
Compile flags
|
Compile flags
|
||||||
^^^^^^^^^^^^^
|
^^^^^^^^^^^^^
|
||||||
|
|
||||||
- Compile flags like ``-xc++-header`` that must precede input file names are now
|
|
||||||
added correctly by the
|
|
||||||
`CompileFlags.Add <https://clangd.llvm.org/config#add>`_ config option.
|
|
||||||
|
|
||||||
- If multiple architectures are specified (e.g. when targeting Apple M1+Intel),
|
|
||||||
clangd will now use the host architecture instead of failing to parse.
|
|
||||||
|
|
||||||
- Added `CompileFlags.Compiler <https://clangd.llvm.org/config#compiler>`_
|
|
||||||
option to override executable name in compile flags.
|
|
||||||
|
|
||||||
- Copying ``compile_commands.json`` entries from one file to another (and simply
|
|
||||||
adjusting ``file``) should now work correctly.
|
|
||||||
|
|
||||||
Hover
|
Hover
|
||||||
^^^^^
|
^^^^^
|
||||||
|
|
||||||
- Hovering on many attributes (e.g. ``[[nodiscard]]``) will show documentation.
|
|
||||||
- Hovering on include directives shows the resolved header path.
|
|
||||||
- Hovering on character literals shows their numeric value.
|
|
||||||
- Code snippets are marked with the appropriate language instead of always C++.
|
|
||||||
This may improve clients' syntax highlighting.
|
|
||||||
- Include desugared types in hover, like in diagnostics.
|
|
||||||
Off by default, controlled with `Hover.ShowAKA
|
|
||||||
<https://clangd.llvm.org/config#showaka>`_ config option.
|
|
||||||
|
|
||||||
Code completion
|
Code completion
|
||||||
^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
- Completion of attributes (e.g. ``[[gsl::Owner(Foo)]]``)
|
|
||||||
- Completion of ``/*ParameterName=*/`` comments.
|
|
||||||
- Documentation of items with ``annotate`` attributes now includes the
|
|
||||||
annotation.
|
|
||||||
- Improved handling of results with 1-3 character names.
|
|
||||||
- Completion of members in constructor init lists (``Foo() : member_() {}``) is
|
|
||||||
much more reliable.
|
|
||||||
- C++ Standard library completions should be less noisy: parameter names are
|
|
||||||
deuglified (``vector<_Tp>`` is now ``vector<Tp>``) and many
|
|
||||||
``__implementation_details`` are hidden altogether.
|
|
||||||
|
|
||||||
Signature help
|
Signature help
|
||||||
^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^
|
||||||
|
|
||||||
- Signatures for template argument lists
|
|
||||||
- Signatures for braced constructor calls
|
|
||||||
- Signatures for aggregate initializers
|
|
||||||
- Signatures for members in constructor init lists are much more reliable.
|
|
||||||
- Variadic functions correctly show signature help when typing the variadic
|
|
||||||
arguments.
|
|
||||||
- Signature help is retriggered on closing brackets ``)``, ``}``, ``>``.
|
|
||||||
This means signature help should be correct after nested function calls.
|
|
||||||
|
|
||||||
Cross-references
|
Cross-references
|
||||||
^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
- Support for ``textDocument/typeDefinition`` LSP request.
|
|
||||||
- Improved handling of symbols introduced via using declarations.
|
|
||||||
- Searching for references to an overriding method also returns references to
|
|
||||||
the base class method. (Typically calls that may invoke the override).
|
|
||||||
- All references from the current file are always returned, even if there are
|
|
||||||
enough to exceed our usual limit.
|
|
||||||
|
|
||||||
Objective-C
|
Objective-C
|
||||||
^^^^^^^^^^^
|
^^^^^^^^^^^
|
||||||
|
|
||||||
- ``#pragma mark`` directives now form groups in the document outline.
|
|
||||||
- ``id`` and ``instancetype`` are treated as keywords rather than typedefs
|
|
||||||
|
|
||||||
Miscellaneous
|
Miscellaneous
|
||||||
^^^^^^^^^^^^^
|
^^^^^^^^^^^^^
|
||||||
|
|
||||||
- Include request context on crashes when possible.
|
|
||||||
- Many stability, performance and correctness improvements.
|
|
||||||
- ``-use-dirty-headers`` command line flag to use dirty buffer contents when
|
|
||||||
parsing headers, rather than the saved on-disk contents.
|
|
||||||
- ``clangd --check=/path/to/file.cpp`` now reads config files in ancestor
|
|
||||||
directories, in addition to user config file.
|
|
||||||
- Improved compile flags handling in ``clangd-indexer``.
|
|
||||||
- The index file format changed in this release, indexes need to be rebuilt.
|
|
||||||
This should happen transparently in standard cases (the background index).
|
|
||||||
|
|
||||||
Improvements to clang-doc
|
Improvements to clang-doc
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
|
@ -199,159 +96,15 @@ The improvements are...
|
||||||
Improvements to clang-tidy
|
Improvements to clang-tidy
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
- Ignore warnings from macros defined in system headers, if not using the
|
|
||||||
`-system-headers` flag.
|
|
||||||
|
|
||||||
- Added support for globbing in `NOLINT*` expressions, to simplify suppressing
|
|
||||||
multiple warnings in the same line.
|
|
||||||
|
|
||||||
- Added support for `NOLINTBEGIN` ... `NOLINTEND` comments to suppress
|
|
||||||
Clang-Tidy warnings over multiple lines.
|
|
||||||
|
|
||||||
- Added support for external plugin checks with `-load`.
|
|
||||||
|
|
||||||
New checks
|
New checks
|
||||||
^^^^^^^^^^
|
^^^^^^^^^^
|
||||||
|
|
||||||
- New :doc:`abseil-cleanup-ctad
|
|
||||||
<clang-tidy/checks/abseil-cleanup-ctad>` check.
|
|
||||||
|
|
||||||
Suggests switching the initialization pattern of ``absl::Cleanup``
|
|
||||||
instances from the factory function to class template argument
|
|
||||||
deduction (CTAD), in C++17 and higher.
|
|
||||||
|
|
||||||
- New :doc:`bugprone-stringview-nullptr
|
|
||||||
<clang-tidy/checks/bugprone-stringview-nullptr>` check.
|
|
||||||
|
|
||||||
Checks for various ways that the ``const CharT*`` constructor of
|
|
||||||
``std::basic_string_view`` can be passed a null argument.
|
|
||||||
|
|
||||||
- New :doc:`bugprone-suspicious-memory-comparison
|
|
||||||
<clang-tidy/checks/bugprone-suspicious-memory-comparison>` check.
|
|
||||||
|
|
||||||
Finds potentially incorrect calls to ``memcmp()`` based on properties of the
|
|
||||||
arguments.
|
|
||||||
|
|
||||||
- New :doc:`cppcoreguidelines-virtual-class-destructor
|
|
||||||
<clang-tidy/checks/cppcoreguidelines-virtual-class-destructor>` check.
|
|
||||||
|
|
||||||
Finds virtual classes whose destructor is neither public and virtual nor
|
|
||||||
protected and non-virtual.
|
|
||||||
|
|
||||||
- New :doc:`misc-misleading-bidirectional <clang-tidy/checks/misc-misleading-bidirectional>` check.
|
|
||||||
|
|
||||||
Inspects string literal and comments for unterminated bidirectional Unicode
|
|
||||||
characters.
|
|
||||||
|
|
||||||
- New :doc:`misc-misleading-identifier <clang-tidy/checks/misc-misleading-identifier>` check.
|
|
||||||
|
|
||||||
Reports identifier with unicode right-to-left characters.
|
|
||||||
|
|
||||||
- New :doc:`readability-container-contains
|
|
||||||
<clang-tidy/checks/readability-container-contains>` check.
|
|
||||||
|
|
||||||
Finds usages of ``container.count()`` and ``container.find() == container.end()`` which should
|
|
||||||
be replaced by a call to the ``container.contains()`` method introduced in C++20.
|
|
||||||
|
|
||||||
- New :doc:`readability-container-data-pointer
|
|
||||||
<clang-tidy/checks/readability-container-data-pointer>` check.
|
|
||||||
|
|
||||||
Finds cases where code could use ``data()`` rather than the address of the
|
|
||||||
element at index 0 in a container.
|
|
||||||
|
|
||||||
- New :doc:`readability-duplicate-include
|
|
||||||
<clang-tidy/checks/readability-duplicate-include>` check.
|
|
||||||
|
|
||||||
Looks for duplicate includes and removes them.
|
|
||||||
|
|
||||||
- New :doc:`readability-identifier-length
|
|
||||||
<clang-tidy/checks/readability-identifier-length>` check.
|
|
||||||
|
|
||||||
Reports identifiers whose names are too short. Currently checks local
|
|
||||||
variables and function parameters only.
|
|
||||||
|
|
||||||
New check aliases
|
New check aliases
|
||||||
^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
- New alias :doc:`cert-err33-c
|
|
||||||
<clang-tidy/checks/cert-err33-c>` to
|
|
||||||
:doc:`bugprone-unused-return-value
|
|
||||||
<clang-tidy/checks/bugprone-unused-return-value>` was added.
|
|
||||||
|
|
||||||
- New alias :doc:`cert-exp42-c
|
|
||||||
<clang-tidy/checks/cert-exp42-c>` to
|
|
||||||
:doc:`bugprone-suspicious-memory-comparison
|
|
||||||
<clang-tidy/checks/bugprone-suspicious-memory-comparison>` was added.
|
|
||||||
|
|
||||||
- New alias :doc:`cert-flp37-c
|
|
||||||
<clang-tidy/checks/cert-flp37-c>` to
|
|
||||||
:doc:`bugprone-suspicious-memory-comparison
|
|
||||||
<clang-tidy/checks/bugprone-suspicious-memory-comparison>` was added.
|
|
||||||
|
|
||||||
Changes in existing checks
|
Changes in existing checks
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
- :doc:`bugprone-assert-side-effect
|
|
||||||
<clang-tidy/checks/bugprone-assert-side-effect>` check now supports an
|
|
||||||
``IgnoredFunctions`` option to explicitly consider the specified
|
|
||||||
semicolon-separated functions list as not having any side-effects.
|
|
||||||
Regular expressions for the list items are also accepted.
|
|
||||||
|
|
||||||
- Fixed a false positive in :doc:`bugprone-throw-keyword-missing
|
|
||||||
<clang-tidy/checks/bugprone-throw-keyword-missing>` when creating an
|
|
||||||
exception object using placement new.
|
|
||||||
|
|
||||||
- Removed default setting ``cppcoreguidelines-explicit-virtual-functions.IgnoreDestructors = "true"``,
|
|
||||||
from :doc:`cppcoreguidelines-explicit-virtual-functions
|
|
||||||
<clang-tidy/checks/cppcoreguidelines-explicit-virtual-functions>`
|
|
||||||
to match the current state of the C++ Core Guidelines.
|
|
||||||
|
|
||||||
- Eliminated false positives for :doc:`cppcoreguidelines-macro-usage
|
|
||||||
<clang-tidy/checks/cppcoreguidelines-macro-usage>` by restricting
|
|
||||||
the warning about using constants to only macros that expand to literals.
|
|
||||||
|
|
||||||
- :doc:`cppcoreguidelines-narrowing-conversions
|
|
||||||
<clang-tidy/checks/cppcoreguidelines-narrowing-conversions>`
|
|
||||||
check now supports a ``WarnOnIntegerToFloatingPointNarrowingConversion``
|
|
||||||
option to control whether to warn on narrowing integer to floating-point
|
|
||||||
conversions.
|
|
||||||
|
|
||||||
- Make the :doc:`cppcoreguidelines-pro-bounds-array-to-pointer-decay
|
|
||||||
<clang-tidy/checks/cppcoreguidelines-pro-bounds-array-to-pointer-decay>`
|
|
||||||
check accept string literal to pointer decay in conditional operator even
|
|
||||||
if operands are of the same length.
|
|
||||||
|
|
||||||
- Removed suggestion ``use gsl::at`` from warning message in the
|
|
||||||
:doc:`cppcoreguidelines-pro-bounds-constant-array-index
|
|
||||||
<clang-tidy/checks/cppcoreguidelines-pro-bounds-constant-array-index>`
|
|
||||||
check, since that is not a requirement from the C++ Core Guidelines.
|
|
||||||
This allows people to choose their own safe indexing strategy. The
|
|
||||||
fix-it is kept for those who want to use the GSL library.
|
|
||||||
|
|
||||||
- Fixed a false positive in :doc:`fuchsia-trailing-return
|
|
||||||
<clang-tidy/checks/fuchsia-trailing-return>` for C++17 deduction guides.
|
|
||||||
|
|
||||||
- Updated :doc:`google-readability-casting
|
|
||||||
<clang-tidy/checks/google-readability-casting>` to diagnose and fix
|
|
||||||
functional casts, to achieve feature parity with the corresponding
|
|
||||||
``cpplint.py`` check.
|
|
||||||
|
|
||||||
- Generalized the :doc:`modernize-use-default-member-init
|
|
||||||
<clang-tidy/checks/modernize-use-default-member-init>` check to handle
|
|
||||||
non-default constructors.
|
|
||||||
|
|
||||||
- Improved :doc:`performance-move-const-arg
|
|
||||||
<clang-tidy/checks/performance-move-const-arg>` check.
|
|
||||||
|
|
||||||
Removed a wrong FixIt for trivially copyable objects wrapped by
|
|
||||||
``std::move()`` and passed to an rvalue reference parameter. Removal of
|
|
||||||
``std::move()`` would break the code.
|
|
||||||
|
|
||||||
- :doc:`readability-simplify-boolean-expr
|
|
||||||
<clang-tidy/checks/readability-simplify-boolean-expr>` now simplifies
|
|
||||||
return statements associated with ``case``, ``default`` and labeled
|
|
||||||
statements.
|
|
||||||
|
|
||||||
Removed checks
|
Removed checks
|
||||||
^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
|
|
@ -52,70 +52,21 @@ Major New Features
|
||||||
Improvements to Clang's diagnostics
|
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
|
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
|
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
|
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
|
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
|
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
|
New Pragmas in Clang
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
|
@ -124,83 +75,12 @@ New Pragmas in Clang
|
||||||
Attribute Changes 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
|
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
|
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
|
C++ Language Changes in Clang
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
|
@ -209,27 +89,12 @@ C++ Language Changes in Clang
|
||||||
C++20 Feature Support
|
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
|
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
|
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
|
Objective-C Language Changes in Clang
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
|
@ -241,25 +106,9 @@ OpenCL C Language Changes in Clang
|
||||||
ABI 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
|
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
|
CUDA Support in Clang
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
|
@ -268,138 +117,27 @@ CUDA Support in Clang
|
||||||
X86 Support in Clang
|
X86 Support in Clang
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
- Support for ``AVX512-FP16`` instructions has been added.
|
|
||||||
|
|
||||||
DWARF Support in Clang
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
libclang
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
|
|
@ -49,9 +49,9 @@ copyright = u'2013-%d, Analyzer Team' % date.today().year
|
||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short version.
|
# The short version.
|
||||||
version = '14'
|
version = '15'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = '14'
|
release = '15'
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
|
|
@ -30,7 +30,7 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR LIBCXX_STANDALONE_BUIL
|
||||||
project(libcxx CXX C)
|
project(libcxx CXX C)
|
||||||
|
|
||||||
set(PACKAGE_NAME libcxx)
|
set(PACKAGE_NAME libcxx)
|
||||||
set(PACKAGE_VERSION 14.0.0git)
|
set(PACKAGE_VERSION 15.0.0git)
|
||||||
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
|
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
|
||||||
set(PACKAGE_BUGREPORT "llvm-bugs@lists.llvm.org")
|
set(PACKAGE_BUGREPORT "llvm-bugs@lists.llvm.org")
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
=========================================
|
=========================================
|
||||||
Libc++ 14.0.0 (In-Progress) Release Notes
|
Libc++ 15.0.0 (In-Progress) Release Notes
|
||||||
=========================================
|
=========================================
|
||||||
|
|
||||||
.. contents::
|
.. contents::
|
||||||
|
@ -10,7 +10,7 @@ Written by the `Libc++ Team <https://libcxx.llvm.org>`_
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
These are in-progress notes for the upcoming libc++ 14 release.
|
These are in-progress notes for the upcoming libc++ 15 release.
|
||||||
Release notes for previous releases can be found on
|
Release notes for previous releases can be found on
|
||||||
`the Download Page <https://releases.llvm.org/download.html>`_.
|
`the Download Page <https://releases.llvm.org/download.html>`_.
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ Introduction
|
||||||
============
|
============
|
||||||
|
|
||||||
This document contains the release notes for the libc++ C++ Standard Library,
|
This document contains the release notes for the libc++ C++ Standard Library,
|
||||||
part of the LLVM Compiler Infrastructure, release 14.0.0. Here we describe the
|
part of the LLVM Compiler Infrastructure, release 15.0.0. Here we describe the
|
||||||
status of libc++ in some detail, including major improvements from the previous
|
status of libc++ in some detail, including major improvements from the previous
|
||||||
release and new feature work. For the general LLVM release notes, see `the LLVM
|
release and new feature work. For the general LLVM release notes, see `the LLVM
|
||||||
documentation <https://llvm.org/docs/ReleaseNotes.html>`_. All LLVM releases may
|
documentation <https://llvm.org/docs/ReleaseNotes.html>`_. All LLVM releases may
|
||||||
|
@ -32,199 +32,17 @@ main Libc++ web page, this document applies to the *next* release, not
|
||||||
the current one. To see the release notes for a specific release, please
|
the current one. To see the release notes for a specific release, please
|
||||||
see the `releases page <https://llvm.org/releases/>`_.
|
see the `releases page <https://llvm.org/releases/>`_.
|
||||||
|
|
||||||
What's New in Libc++ 14.0.0?
|
What's New in Libc++ 15.0.0?
|
||||||
============================
|
============================
|
||||||
|
|
||||||
New Features
|
New Features
|
||||||
------------
|
------------
|
||||||
|
|
||||||
- There's support for the C++20 header ``<format>``. Some parts are still
|
|
||||||
missing, most notably the compile-time format string validation. Some
|
|
||||||
functions are known to be inefficient, both in memory usage and performance.
|
|
||||||
The implementation isn't API- or ABI-stable and therefore considered
|
|
||||||
experimental. (Some not-yet-implemented papers require an API-break.)
|
|
||||||
Vendors can still disable this header by turning the CMake option
|
|
||||||
`LIBCXX_ENABLE_INCOMPLETE_FEATURES` off.
|
|
||||||
|
|
||||||
- There's a new CMake option ``LIBCXX_ENABLE_UNICODE`` to disable Unicode
|
|
||||||
support in the ``<format>`` header. This only affects the estimation of the
|
|
||||||
output width of the format functions.
|
|
||||||
|
|
||||||
- Support for building libc++ on top of a C Standard Library that does not support ``wchar_t`` was
|
|
||||||
added. This is useful for building libc++ in an embedded setting, and it adds itself to the various
|
|
||||||
freestanding-friendly options provided by libc++.
|
|
||||||
|
|
||||||
- Defining ``_LIBCPP_DEBUG`` to ``1`` enables the randomization of unspecified
|
|
||||||
behavior in standard algorithms (e.g. the ordering of equal elements in ``std::sort``, or
|
|
||||||
the ordering of both sides of the partition in ``std::nth_element``).
|
|
||||||
|
|
||||||
- Floating-point support for ``std::to_chars`` support has been added.
|
|
||||||
Thanks to Stephan T. Lavavej and Microsoft for providing their implementation
|
|
||||||
to libc++.
|
|
||||||
|
|
||||||
- The C++20 ``<coroutine>`` implementation has been completed.
|
|
||||||
|
|
||||||
- More C++20 features have been implemented. :doc:`Status/Cxx20` has the full
|
|
||||||
overview of libc++'s C++20 implementation status.
|
|
||||||
|
|
||||||
- More C++2b features have been implemented. :doc:`Status/Cxx2b` has the full
|
|
||||||
overview of libc++'s C++2b implementation status.
|
|
||||||
|
|
||||||
API Changes
|
API Changes
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
- The functions ``std::atomic<T*>::fetch_(add|sub)`` and
|
|
||||||
``std::atomic_fetch_(add|sub)`` no longer accept a function pointer. While
|
|
||||||
this is technically an API break, the invalid syntax isn't supported by
|
|
||||||
libstdc++ and MSVC STL. See https://godbolt.org/z/49fvzz98d.
|
|
||||||
|
|
||||||
- The call of the functions ``std::atomic_(add|sub)(std::atomic<T*>*, ...)``
|
|
||||||
with the explicit template argument ``T`` are now ill-formed. While this is
|
|
||||||
technically an API break, the invalid syntax isn't supported by libstdc++ and
|
|
||||||
MSVC STL. See https://godbolt.org/z/v9959re3v.
|
|
||||||
|
|
||||||
Due to this change it's now possible to call these functions with the
|
|
||||||
explicit template argument ``T*``. This allows using the same syntax on the
|
|
||||||
major Standard library implementations.
|
|
||||||
See https://godbolt.org/z/oEfzPhTTb.
|
|
||||||
|
|
||||||
Calls to these functions where the template argument was deduced by the
|
|
||||||
compiler are unaffected by this change.
|
|
||||||
|
|
||||||
- The functions ``std::allocator<T>::allocate`` and
|
|
||||||
``std::experimental::pmr::polymorphic_allocator<T>::allocate`` now throw
|
|
||||||
an exception of type ``std::bad_array_new_length`` when the requested size
|
|
||||||
exceeds the maximum supported size, as required by the C++ standard.
|
|
||||||
Previously the type ``std::length_error`` was used.
|
|
||||||
|
|
||||||
- Removed the nonstandard methods ``std::chrono::file_clock::to_time_t`` and
|
|
||||||
``std::chrono::file_clock::from_time_t``; neither libstdc++ nor MSVC STL
|
|
||||||
had such methods. Instead, in C++20, you can use ``std::chrono::file_clock::from_sys``
|
|
||||||
and ``std::chrono::file_clock::to_sys``, which are specified in the Standard.
|
|
||||||
If you are not using C++20, you should move to it.
|
|
||||||
|
|
||||||
- The declarations of functions ``declare_reachable``, ``undeclare_reachable``, ``declare_no_pointers``,
|
|
||||||
``undeclare_no_pointers``, and ``get_pointer_safety`` have been removed not only from C++2b but
|
|
||||||
from all modes. Their symbols are still provided by the dynamic library for the benefit of
|
|
||||||
existing compiled code. All of these functions have always behaved as no-ops.
|
|
||||||
|
|
||||||
- ``std::filesystem::path::iterator``, which (in our implementation) stashes
|
|
||||||
a ``path`` value inside itself similar to ``istream_iterator``, now sets its
|
|
||||||
``reference`` type to ``path`` and its ``iterator_category`` to ``input_iterator_tag``,
|
|
||||||
so that it is a conforming input iterator in C++17 and a conforming
|
|
||||||
``std::bidirectional_iterator`` in C++20. Before this release, it had set its
|
|
||||||
``reference`` type to ``const path&`` and its ``iterator_category`` to
|
|
||||||
``bidirectional_iterator_tag``, making it a non-conforming bidirectional iterator.
|
|
||||||
After this change, ``for`` loops of the form ``for (auto& c : path)`` must be rewritten
|
|
||||||
as either ``for (auto&& c : path)`` or ``for (const auto& c : path)``.
|
|
||||||
``std::reverse_iterator<path::iterator>`` is no longer rejected.
|
|
||||||
|
|
||||||
- Removed the nonstandard default constructor from ``std::chrono::month_weekday``.
|
|
||||||
You must now explicitly initialize with a ``chrono::month`` and
|
|
||||||
``chrono::weekday_indexed`` instead of "meh, whenever".
|
|
||||||
|
|
||||||
- C++20 requires that ``std::basic_string::reserve(n)`` never reduce the capacity
|
|
||||||
of the string. (For that, use ``shrink_to_fit()``.) Prior to this release, libc++'s
|
|
||||||
``std::basic_string::reserve(n)`` could reduce capacity in C++17 and before, but
|
|
||||||
not in C++20 and later. This caused ODR violations when mixing code compiled under
|
|
||||||
different Standard modes. After this change, libc++'s ``std::basic_string::reserve(n)``
|
|
||||||
never reduces capacity, even in C++17 and before.
|
|
||||||
C++20 deprecates the zero-argument overload of ``std::basic_string::reserve()``,
|
|
||||||
but specifically permits it to reduce capacity. To avoid breaking existing code
|
|
||||||
assuming that ``std::basic_string::reserve()`` will shrink, libc++ maintains
|
|
||||||
the behavior to shrink, even though that makes ``std::basic_string::reserve()`` not
|
|
||||||
a synonym for ``std::basic_string::reserve(0)`` in any Standard mode anymore.
|
|
||||||
|
|
||||||
- The ``<experimental/coroutine>`` header is deprecated, as is any
|
|
||||||
use of coroutines without C++20. Use C++20's ``<coroutine>`` header
|
|
||||||
instead. The ``<experimental/coroutine>`` header will be removed
|
|
||||||
in LLVM 15.
|
|
||||||
|
|
||||||
- ``_VSTD`` is now an alias for ``std`` instead of ``std::_LIBCPP_ABI_NAMESPACE``.
|
|
||||||
This is technically not a functional change, except for folks that might have been
|
|
||||||
using ``_VSTD`` in creative ways (which has never been officially supported).
|
|
||||||
|
|
||||||
ABI Changes
|
ABI Changes
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
- The C++17 variable templates ``is_error_code_enum_v`` and
|
|
||||||
``is_error_condition_enum_v`` are now of type ``bool`` instead of ``size_t``.
|
|
||||||
|
|
||||||
- The C++03 emulation type for ``std::nullptr_t`` has been removed in favor of
|
|
||||||
using ``decltype(nullptr)`` in all standard modes. This is an ABI break for
|
|
||||||
anyone compiling in C++03 mode and who has ``std::nullptr_t`` as part of their
|
|
||||||
ABI. However, previously, these users' ABI would be incompatible with any other
|
|
||||||
binary or static archive compiled with C++11 or later. If you start seeing linker
|
|
||||||
errors involving ``std::nullptr_t`` against previously compiled binaries, this may
|
|
||||||
be the cause. You can define the ``_LIBCPP_ABI_USE_CXX03_NULLPTR_EMULATION`` macro
|
|
||||||
to return to the previous behavior. That macro will be removed in LLVM 15. Please
|
|
||||||
comment `on D109459 <https://reviews.llvm.org/D109459>`_ if you are broken by this change
|
|
||||||
and need to define the macro.
|
|
||||||
|
|
||||||
- On Apple platforms, ``std::random_device`` is now implemented on top of ``arc4random()``
|
|
||||||
instead of reading from ``/dev/urandom``. Any implementation-defined token used when
|
|
||||||
constructing a ``std::random_device`` will now be ignored instead of interpreted as a
|
|
||||||
file to read entropy from.
|
|
||||||
|
|
||||||
- ``std::lognormal_distribution::param_type`` used to store a data member of type
|
|
||||||
``std::normal_distribution``; now this member is stored in the ``lognormal_distribution``
|
|
||||||
class itself, and the ``param_type`` stores only the mean and standard deviation,
|
|
||||||
as required by the Standard. This changes ``sizeof(std::lognormal_distribution::param_type)``.
|
|
||||||
You can define the ``_LIBCPP_ABI_OLD_LOGNORMAL_DISTRIBUTION`` macro to return to the
|
|
||||||
previous behavior. That macro will be removed in LLVM 15. Please comment
|
|
||||||
`on PR52906 <https://llvm.org/PR52906>`_ if you are broken by this change and need to
|
|
||||||
define the macro.
|
|
||||||
|
|
||||||
Build System Changes
|
Build System Changes
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
- Building the libc++ shared or static library requires a C++ 20 capable compiler.
|
|
||||||
Consider using a Bootstrapping build to build libc++ with a fresh Clang if you
|
|
||||||
can't use the system compiler to build libc++ anymore.
|
|
||||||
|
|
||||||
- Historically, there have been numerous ways of building libc++ and libc++abi. This has
|
|
||||||
led to at least 5 different ways to build the runtimes, which was impossible to
|
|
||||||
maintain with a good level of support. Starting with this release, libc++ and libc++abi support
|
|
||||||
exactly two ways of being built, which should cater to all use-cases. Furthermore,
|
|
||||||
these builds are as lightweight as possible and will work consistently even when targeting
|
|
||||||
embedded platforms, which used not to be the case. :doc:`BuildingLibcxx` describes
|
|
||||||
those two ways of building. Please migrate over to the appropriate build instructions
|
|
||||||
as soon as possible.
|
|
||||||
|
|
||||||
All other ways to build are deprecated and will not be supported in the next release.
|
|
||||||
We understand that making these changes can be daunting. For that reason, here's a
|
|
||||||
summary of how to migrate from the two most common ways to build:
|
|
||||||
|
|
||||||
- If you were rooting your CMake invocation at ``<monorepo>/llvm`` and passing ``-DLLVM_ENABLE_PROJECTS=<...>``
|
|
||||||
(which was the previously advertised way to build the runtimes), please simply root your CMake invocation at
|
|
||||||
``<monorepo>/runtimes`` and pass ``-DLLVM_ENABLE_RUNTIMES=<...>``.
|
|
||||||
|
|
||||||
- If you were doing two CMake invocations, one rooted at ``<monorepo>/libcxx`` and one rooted at
|
|
||||||
``<monorepo>/libcxxabi`` (this used to be called a "Standalone build"), please move them to a
|
|
||||||
single invocation like so:
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
$ cmake -S <monorepo>/libcxx -B libcxx-build <LIBCXX-OPTIONS>
|
|
||||||
$ cmake -S <monorepo>/libcxxabi -B libcxxabi-build <LIBCXXABI-OPTIONS>
|
|
||||||
|
|
||||||
should become
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
$ cmake -S <monorepo>/runtimes -B build -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" <LIBCXX-OPTIONS> <LIBCXXABI-OPTIONS>
|
|
||||||
|
|
||||||
- Support for building the runtimes using the GCC 32 bit multilib flag (``-m32``) has been removed. Support
|
|
||||||
for this had been flaky for a while, and we didn't know of anyone depending on this. Instead, please perform
|
|
||||||
a normal cross-compilation of the runtimes using the appropriate target, such as passing the following to
|
|
||||||
your bootstrapping build:
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
-DLLVM_RUNTIME_TARGETS=i386-unknown-linux
|
|
||||||
|
|
||||||
- Libc++, libc++abi, and libunwind will not be built with ``-fPIC`` by default anymore.
|
|
||||||
If you want to build those runtimes with position-independent code, please specify
|
|
||||||
``-DCMAKE_POSITION_INDEPENDENT_CODE=ON`` explicitly when configuring the build, or
|
|
||||||
``-DRUNTIMES_<target-name>_CMAKE_POSITION_INDEPENDENT_CODE=ON`` if using the
|
|
||||||
bootstrapping build.
|
|
||||||
|
|
|
@ -48,9 +48,9 @@ copyright = u'2011-%d, LLVM Project' % date.today().year
|
||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = '14.0'
|
version = '15.0'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = '14.0'
|
release = '15.0'
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
||||||
#define _LIBCPP_VERSION 14000
|
#define _LIBCPP_VERSION 15000
|
||||||
|
|
||||||
#ifndef _LIBCPP_ABI_VERSION
|
#ifndef _LIBCPP_ABI_VERSION
|
||||||
# define _LIBCPP_ABI_VERSION 1
|
# define _LIBCPP_ABI_VERSION 1
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
14000
|
15000
|
||||||
|
|
|
@ -30,7 +30,7 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR LIBUNWIND_STANDALONE_B
|
||||||
project(libunwind LANGUAGES NONE)
|
project(libunwind LANGUAGES NONE)
|
||||||
|
|
||||||
set(PACKAGE_NAME libunwind)
|
set(PACKAGE_NAME libunwind)
|
||||||
set(PACKAGE_VERSION 14.0.0git)
|
set(PACKAGE_VERSION 15.0.0git)
|
||||||
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
|
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
|
||||||
set(PACKAGE_BUGREPORT "llvm-bugs@lists.llvm.org")
|
set(PACKAGE_BUGREPORT "llvm-bugs@lists.llvm.org")
|
||||||
|
|
||||||
|
|
|
@ -48,9 +48,9 @@ copyright = u'2011-%d, LLVM Project' % date.today().year
|
||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = '14.0'
|
version = '15.0'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = '14.0'
|
release = '15.0'
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
|
|
@ -26,30 +26,6 @@ Non-comprehensive list of changes in this release
|
||||||
ELF Improvements
|
ELF Improvements
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
* ``--export-dynamic-symbol-list`` has been added.
|
|
||||||
(`D107317 <https://reviews.llvm.org/D107317>`_)
|
|
||||||
* ``--why-extract`` has been added to query why archive members/lazy object files are extracted.
|
|
||||||
(`D109572 <https://reviews.llvm.org/D109572>`_)
|
|
||||||
* ``e_entry`` no longer falls back to the address of ``.text`` if the entry symbol does not exist.
|
|
||||||
Instead, a value of 0 will be written.
|
|
||||||
(`D110014 <https://reviews.llvm.org/D110014>`_)
|
|
||||||
* If ``-Map`` is specified, ``--cref`` will be printed to the specified file.
|
|
||||||
(`D114663 <https://reviews.llvm.org/D114663>`_)
|
|
||||||
* No longer deduplicate local symbol names at the default optimization level of ``-O1``.
|
|
||||||
This results in a larger ``.strtab`` (usually less than 1%) but a faster link
|
|
||||||
time. Use optimization level ``-O2`` to restore the deduplication.
|
|
||||||
|
|
||||||
Architecture specific changes:
|
|
||||||
|
|
||||||
* The x86-32 port now supports TLSDESC (``-mtls-dialect=gnu2``).
|
|
||||||
(`D112582 <https://reviews.llvm.org/D112582>`_)
|
|
||||||
* The x86-64 port now handles non-RAX/non-adjacent ``R_X86_64_GOTPC32_TLSDESC``
|
|
||||||
and ``R_X86_64_TLSDESC_CALL`` (``-mtls-dialect=gnu2``).
|
|
||||||
(`D114416 <https://reviews.llvm.org/D114416>`_)
|
|
||||||
* For x86-64, ``--no-relax`` now suppresses ``R_X86_64_GOTPCRELX`` and
|
|
||||||
``R_X86_64_REX_GOTPCRELX`` GOT optimization
|
|
||||||
(`D113615 <https://reviews.llvm.org/D113615>`_)
|
|
||||||
|
|
||||||
Breaking changes
|
Breaking changes
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ endif()
|
||||||
set(CMAKE_BUILD_WITH_INSTALL_NAME_DIR ON)
|
set(CMAKE_BUILD_WITH_INSTALL_NAME_DIR ON)
|
||||||
|
|
||||||
if(NOT DEFINED LLVM_VERSION_MAJOR)
|
if(NOT DEFINED LLVM_VERSION_MAJOR)
|
||||||
set(LLVM_VERSION_MAJOR 14)
|
set(LLVM_VERSION_MAJOR 15)
|
||||||
endif()
|
endif()
|
||||||
if(NOT DEFINED LLVM_VERSION_MINOR)
|
if(NOT DEFINED LLVM_VERSION_MINOR)
|
||||||
set(LLVM_VERSION_MINOR 0)
|
set(LLVM_VERSION_MINOR 0)
|
||||||
|
|
|
@ -58,35 +58,18 @@ Non-comprehensive list of changes in this release
|
||||||
Changes to the LLVM IR
|
Changes to the LLVM IR
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
* Using the legacy pass manager for the optimization pipeline is deprecated and
|
|
||||||
will be removed after LLVM 14. In the meantime, only minimal effort will be
|
|
||||||
made to maintain the legacy pass manager for the optimization pipeline.
|
|
||||||
* Max allowed integer type was reduced from 2^24-1 bits to 2^23 bits.
|
|
||||||
* Max allowed alignment was increased from 2^29 to 2^32.
|
|
||||||
|
|
||||||
Changes to building LLVM
|
Changes to building LLVM
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
* Building LLVM with Visual Studio now requires version 2019 or later.
|
|
||||||
|
|
||||||
Changes to TableGen
|
Changes to TableGen
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
Changes to the AArch64 Backend
|
Changes to the AArch64 Backend
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
* Added support for the Armv9-A, Armv9.1-A and Armv9.2-A architectures.
|
|
||||||
* The compiler now recognises the "tune-cpu" function attribute to support
|
|
||||||
the use of the -mtune frontend flag. This allows certain scheduling features
|
|
||||||
and optimisations to be enabled independently of the architecture. If the
|
|
||||||
"tune-cpu" attribute is absent it tunes according to the "target-cpu".
|
|
||||||
|
|
||||||
Changes to the ARM Backend
|
Changes to the ARM Backend
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
* Added support for the Armv9-A, Armv9.1-A and Armv9.2-A architectures.
|
|
||||||
* Added support for the Armv8.1-M PACBTI-M extension.
|
|
||||||
|
|
||||||
Changes to the MIPS Target
|
Changes to the MIPS Target
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
|
@ -107,8 +90,6 @@ Changes to the X86 Target
|
||||||
|
|
||||||
During this release ...
|
During this release ...
|
||||||
|
|
||||||
* Support for ``AVX512-FP16`` instructions has been added.
|
|
||||||
|
|
||||||
Changes to the AMDGPU Target
|
Changes to the AMDGPU Target
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
|
@ -131,9 +112,6 @@ Changes to the OCaml bindings
|
||||||
Changes to the C API
|
Changes to the C API
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
* ``LLVMSetInstDebugLocation`` has been deprecated in favor of the more general
|
|
||||||
``LLVMAddMetadataToInst``.
|
|
||||||
|
|
||||||
Changes to the Go bindings
|
Changes to the Go bindings
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
|
@ -155,32 +133,13 @@ During this release ...
|
||||||
Changes to the LLVM tools
|
Changes to the LLVM tools
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
* llvm-cov: `-name-allowlist` is now accepted in addition to `-name-whitelist`.
|
|
||||||
`-name-whitelist` is marked as deprecated and to be removed in future
|
|
||||||
releases.
|
|
||||||
|
|
||||||
Changes to LLDB
|
Changes to LLDB
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
* A change in Clang's type printing has changed the way LLDB names array types
|
|
||||||
(from ``int [N]`` to ``int[N]``) - LLDB pretty printer type name matching
|
|
||||||
code may need to be updated to handle this.
|
|
||||||
* The following commands now ignore non-address bits (e.g. AArch64 pointer
|
|
||||||
signatures) in address arguments. In addition, non-address bits will not
|
|
||||||
be shown in the output of the commands.
|
|
||||||
|
|
||||||
* ``memory find``
|
|
||||||
* ``memory read``
|
|
||||||
* ``memory tag read``
|
|
||||||
* ``memory tag write``
|
|
||||||
|
|
||||||
* The ``memory read`` command has a new option ``--show-tags``. Use this option
|
|
||||||
to show memory tags beside the contents of tagged memory ranges.
|
|
||||||
|
|
||||||
Changes to Sanitizers
|
Changes to Sanitizers
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
External Open Source Projects Using LLVM 14
|
External Open Source Projects Using LLVM 15
|
||||||
===========================================
|
===========================================
|
||||||
|
|
||||||
* A project...
|
* A project...
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
llvm_version_major = 14
|
llvm_version_major = 15
|
||||||
llvm_version_minor = 0
|
llvm_version_minor = 0
|
||||||
llvm_version_patch = 0
|
llvm_version_patch = 0
|
||||||
llvm_version = "$llvm_version_major.$llvm_version_minor.$llvm_version_patch"
|
llvm_version = "$llvm_version_major.$llvm_version_minor.$llvm_version_patch"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
__author__ = 'Daniel Dunbar'
|
__author__ = 'Daniel Dunbar'
|
||||||
__email__ = 'daniel@minormatter.com'
|
__email__ = 'daniel@minormatter.com'
|
||||||
__versioninfo__ = (14, 0, 0)
|
__versioninfo__ = (15, 0, 0)
|
||||||
__version__ = '.'.join(str(v) for v in __versioninfo__) + 'dev'
|
__version__ = '.'.join(str(v) for v in __versioninfo__) + 'dev'
|
||||||
|
|
||||||
__all__ = []
|
__all__ = []
|
||||||
|
|
|
@ -27,8 +27,8 @@ set python64_dir=C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python36
|
||||||
for /f "usebackq" %%i in (`PowerShell ^(Get-Date^).ToString^('yyyyMMdd'^)`) do set datestamp=%%i
|
for /f "usebackq" %%i in (`PowerShell ^(Get-Date^).ToString^('yyyyMMdd'^)`) do set datestamp=%%i
|
||||||
|
|
||||||
set revision=%1
|
set revision=%1
|
||||||
set package_version=14.0.0-%revision:~0,8%
|
set package_version=15.0.0-%revision:~0,8%
|
||||||
set clang_format_vs_version=14.0.0.%datestamp%
|
set clang_format_vs_version=15.0.0.%datestamp%
|
||||||
set build_dir=llvm_package_%revision:~0,8%
|
set build_dir=llvm_package_%revision:~0,8%
|
||||||
|
|
||||||
echo Revision: %revision%
|
echo Revision: %revision%
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
===========================
|
===========================
|
||||||
OpenMP 12.0.0 Release Notes
|
OpenMP 15.0.0 Release Notes
|
||||||
===========================
|
===========================
|
||||||
|
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
These are in-progress notes for the upcoming LLVM 12.0.0 release.
|
These are in-progress notes for the upcoming LLVM 15.0.0 release.
|
||||||
Release notes for previous releases can be found on
|
Release notes for previous releases can be found on
|
||||||
`the Download Page <https://releases.llvm.org/download.html>`_.
|
`the Download Page <https://releases.llvm.org/download.html>`_.
|
||||||
|
|
||||||
|
@ -12,59 +12,10 @@ OpenMP 12.0.0 Release Notes
|
||||||
Introduction
|
Introduction
|
||||||
============
|
============
|
||||||
|
|
||||||
This document contains the release notes for the OpenMP runtime, release 12.0.0.
|
This document contains the release notes for the OpenMP runtime, release 15.0.0.
|
||||||
Here we describe the status of OpenMP, including major improvements
|
Here we describe the status of OpenMP, including major improvements
|
||||||
from the previous release. All OpenMP releases may be downloaded
|
from the previous release. All OpenMP releases may be downloaded
|
||||||
from the `LLVM releases web site <https://llvm.org/releases/>`_.
|
from the `LLVM releases web site <https://llvm.org/releases/>`_.
|
||||||
|
|
||||||
Non-comprehensive list of changes in this release
|
Non-comprehensive list of changes in this release
|
||||||
=================================================
|
=================================================
|
||||||
|
|
||||||
- Extended the ``libomptarget`` API functions to include source location
|
|
||||||
information and OpenMP target mapper support. This allows ``libomptarget`` to
|
|
||||||
know the source location of the OpenMP region it is executing, as well as the
|
|
||||||
name and declarations of all the variables used inside the region. Each
|
|
||||||
function generated now uses its ``mapper`` variant. The old API calls now call
|
|
||||||
into the new API functions with ``nullptr`` arguments for backwards
|
|
||||||
compatibility with old binaries. Source location information for
|
|
||||||
``libomptarget`` is now generated by Clang at any level of debugging
|
|
||||||
information.
|
|
||||||
|
|
||||||
- Added improved error messages for ``libomptarget`` and ``CUDA`` plugins. Error
|
|
||||||
messages are now presented without requiring a debug build of
|
|
||||||
``libomptarget``. The newly added source location information can also be used
|
|
||||||
to identify which OpenMP target region the failure occurred in. More
|
|
||||||
information can be found :ref:`here <libopenmptarget_errors>`.
|
|
||||||
|
|
||||||
- Added additional environment variables to control output from the
|
|
||||||
``libomptarget`` runtime library. ``LIBOMPTARGET_PROFILE`` to
|
|
||||||
generate time profile output similar to Clang's ``-ftime-trace`` option.
|
|
||||||
``LIBOMPTARGET_MEMORY_MANAGER_THRESHOLD`` sets the threshold size for which
|
|
||||||
the ``libomptarget`` memory manager will handle the allocation.
|
|
||||||
``LIBOMPTARGET_INFO`` allows the user to request certain information from the
|
|
||||||
``libomptarget`` runtime using a 32-bit field. A full description of each
|
|
||||||
environment variable is described :ref:`here <libopenmptarget_environment_vars>`.
|
|
||||||
|
|
||||||
- ``target nowait`` was supported via hidden helper task, which is a task not
|
|
||||||
bound to any parallel region. A hidden helper team with a number of threads is
|
|
||||||
created when the first hidden helper task is encountered. The number of threads
|
|
||||||
can be configured via the environment variable
|
|
||||||
``LIBOMP_NUM_HIDDEN_HELPER_THREADS``. By default it is 8. If
|
|
||||||
``LIBOMP_NUM_HIDDEN_HELPER_THREADS=0``, hidden helper task is disabled and
|
|
||||||
falls back to a regular OpenMP task. It can also be disabled by setting the
|
|
||||||
environment variable ``LIBOMP_USE_HIDDEN_HELPER_TASK=OFF``.
|
|
||||||
|
|
||||||
- ``deviceRTLs`` for NVPTX platform is CUDA free now. It is generally OpenMP code.
|
|
||||||
Target dependent parts are implemented with Clang/LLVM/NVVM intrinsics. CUDA
|
|
||||||
SDK is also dropped as a dependence to build the device runtime, which means
|
|
||||||
device runtime can also be built on a CUDA free system. However, it is
|
|
||||||
disabled by default. Set the CMake variable
|
|
||||||
``LIBOMPTARGET_BUILD_NVPTX_BCLIB=ON`` to enable the build of NVPTX device
|
|
||||||
runtime on a CUDA free system. ``gcc-multilib`` and ``g++-multilib`` are
|
|
||||||
required. If CUDA is found, the device runtime will be built by default.
|
|
||||||
|
|
||||||
- Static NVPTX device runtime library (``libomptarget-nvptx.a``) was dropped.
|
|
||||||
A bitcode library is required to build an OpenMP program. If the library is
|
|
||||||
not found in the default path or any of the paths defined by ``LIBRARY_PATH``,
|
|
||||||
an error will be raised. User can also specify the path to the bitcode device
|
|
||||||
library via ``--libomptarget-nvptx-bc-path=``.
|
|
||||||
|
|
|
@ -10,20 +10,3 @@ In Polly |version| the following important changes have been incorporated.
|
||||||
These release notes are for the next release of Polly and describe
|
These release notes are for the next release of Polly and describe
|
||||||
the new features that have recently been committed to our development
|
the new features that have recently been committed to our development
|
||||||
branch.
|
branch.
|
||||||
|
|
||||||
- The command line option -polly-opt-fusion has been removed. What the
|
|
||||||
flag does was frequently misunderstood and is rarely useful. However,
|
|
||||||
the functionality is still accessible using
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
-polly-isl-arg=--no-schedule-serialize-sccs
|
|
||||||
|
|
||||||
- The command line option -polly-loopfusion-greedy has been added.
|
|
||||||
This will aggressively try to fuse any loop regardless of
|
|
||||||
profitability. The is what users might have expected what
|
|
||||||
-polly-opt-fusion=max would do.
|
|
||||||
|
|
||||||
- Support for gfortran-generated code has been removed. This includes
|
|
||||||
Fortran Array Descriptors (-polly-detect-fortran-arrays) and the
|
|
||||||
-polly-rewrite-byref-params pass.
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
=======================================
|
=======================================
|
||||||
PSTL 14.0.0 (In-Progress) Release Notes
|
PSTL 15.0.0 (In-Progress) Release Notes
|
||||||
=======================================
|
=======================================
|
||||||
|
|
||||||
.. contents::
|
.. contents::
|
||||||
|
@ -10,7 +10,7 @@ Written by the `PSTL Team <https://pstl.llvm.org>`_
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
These are in-progress notes for the upcoming pstl 14 release.
|
These are in-progress notes for the upcoming pstl 15 release.
|
||||||
Release notes for previous releases can be found on
|
Release notes for previous releases can be found on
|
||||||
`the Download Page <https://releases.llvm.org/download.html>`_.
|
`the Download Page <https://releases.llvm.org/download.html>`_.
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ Introduction
|
||||||
============
|
============
|
||||||
|
|
||||||
This document contains the release notes for the PSTL parallel algorithms
|
This document contains the release notes for the PSTL parallel algorithms
|
||||||
library, part of the LLVM Compiler Infrastructure, release 14.0.0. Here we
|
library, part of the LLVM Compiler Infrastructure, release 15.0.0. Here we
|
||||||
describe the status of the library in some detail, including major improvements
|
describe the status of the library in some detail, including major improvements
|
||||||
from the previous release and new feature work. For the general LLVM release
|
from the previous release and new feature work. For the general LLVM release
|
||||||
notes, see `the LLVM documentation <https://llvm.org/docs/ReleaseNotes.html>`_.
|
notes, see `the LLVM documentation <https://llvm.org/docs/ReleaseNotes.html>`_.
|
||||||
|
@ -30,7 +30,7 @@ web page, this document applies to the *next* release, not the current one.
|
||||||
To see the release notes for a specific release, please see the `releases
|
To see the release notes for a specific release, please see the `releases
|
||||||
page <https://llvm.org/releases/>`_.
|
page <https://llvm.org/releases/>`_.
|
||||||
|
|
||||||
What's New in PSTL 14.0.0?
|
What's New in PSTL 15.0.0?
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
New Features
|
New Features
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
#include <__pstl_config_site>
|
#include <__pstl_config_site>
|
||||||
|
|
||||||
// The version is XYYZ, where X is major, YY is minor, and Z is patch (i.e. X.YY.Z)
|
// The version is XYYZ, where X is major, YY is minor, and Z is patch (i.e. X.YY.Z)
|
||||||
#define _PSTL_VERSION 14000
|
#define _PSTL_VERSION 15000
|
||||||
#define _PSTL_VERSION_MAJOR (_PSTL_VERSION / 1000)
|
#define _PSTL_VERSION_MAJOR (_PSTL_VERSION / 1000)
|
||||||
#define _PSTL_VERSION_MINOR ((_PSTL_VERSION % 1000) / 10)
|
#define _PSTL_VERSION_MINOR ((_PSTL_VERSION % 1000) / 10)
|
||||||
#define _PSTL_VERSION_PATCH (_PSTL_VERSION % 10)
|
#define _PSTL_VERSION_PATCH (_PSTL_VERSION % 10)
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
|
|
||||||
#include <pstl/internal/pstl_config.h>
|
#include <pstl/internal/pstl_config.h>
|
||||||
|
|
||||||
static_assert(_PSTL_VERSION == 14000);
|
static_assert(_PSTL_VERSION == 15000);
|
||||||
static_assert(_PSTL_VERSION_MAJOR == 14);
|
static_assert(_PSTL_VERSION_MAJOR == 15);
|
||||||
static_assert(_PSTL_VERSION_MINOR == 00);
|
static_assert(_PSTL_VERSION_MINOR == 00);
|
||||||
static_assert(_PSTL_VERSION_PATCH == 0);
|
static_assert(_PSTL_VERSION_PATCH == 0);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue