Este conteúdo não está disponível no idioma selecionado.
Chapter 5. Changes in LLVM Toolset
LLVM Toolset has been updated from version 17.0.6 to 18.1.8 on RHEL 8 and RHEL 9.
Notable LLVM updates:
-
The constant expression variants of the following instructions have been removed:
and,or,lshr,ashr,zext,sext,fptrunc,fpext,fptoui,fptosi,uitofp,sitofp. -
The
llvm.exp10intrinsic has been added. -
The
code_modelattribute for global variables has been added. - The backend for the AArch64, AMDGPU, PowerPC, RISC-V, SystemZ and x86 architectures has been improved.
- LLVM tools have been improved.
Notable Clang enhancements:
C++20 feature support:
-
Clang no longer performs One Definition Rule (ODR) checks for declarations in the global module fragment. To enable more strict behavior, use the
-Xclang -fno-skip-odr-check-in-gmfoption.
-
Clang no longer performs One Definition Rule (ODR) checks for declarations in the global module fragment. To enable more strict behavior, use the
C++23 feature support:
-
A new diagnostic flag
-Wc++23-lambda-attributeshas been added to warn about the use of attributes on lambdas.
-
A new diagnostic flag
C++2c feature support:
-
Clang now allows using the
_character as a placeholder variable name multiple times in the same scope. - Attributes now expect unevaluated strings in attribute parameters that are string literals.
- The deprecated arithmetic conversion on enumerations from C++26 has been removed.
- The specification of template parameter initialization has been improved.
-
Clang now allows using the
- For a complete list of changes, see the upstream release notes for Clang.
ABI changes in Clang:
-
Following the SystemV ABI for x86_64, the
__int128arguments are no longer split between a register and a stack slot. - For more information, see the list of ABI changes in Clang.
Notable backwards incompatible changes:
- A bug fix in the reversed argument order for templated operators breaks code in C++20 that was previously accepted in C++17.
-
The
GCC_INSTALL_PREFIXCMake variable (which sets the default--gcc-toolchain=) is deprecated and will be removed. Specify the--gcc-install-dir=or--gcc-triple=option in a configuration file instead. -
The default extension name for precompiled headers (PCH) generation (
-c -xc-headerand-c -xc++-header) is now.pchinstead of.gch. -
When
-include a.hprobes thea.h.gchfile, the include now ignoresa.h.gchif it is not a Clang PCH file or a directory containing any Clang PCH file. -
A bug that caused
__has_cpp_attributeand__has_c_attributeto return incorrect values for certain C++-11-style attributes has been fixed. -
A bug in finding a matching
operator!=while adding a reversedoperator==has been fixed. - The name mangling rules for function templates have been changed to accept that functions can be overloaded on their template parameter lists or requires-clauses.
-
The
-Wenum-constexpr-conversionwarning is now enabled by default on system headers and macros. It will be turned into a hard (non-downgradable) error in the next Clang release. - A path to the imported modules for C++20 named modules can no longer be hardcoded. You must specify all the dependent modules from the command line.
-
It is no longer possible to import modules by using
import <module>; Clang uses explicitly-built modules. - For more details, see the list of potentially breaking changes.
For detailed information regarding the updates, see the upstream LLVM release notes and Clang release notes.