```{warning} These are in-progress notes for the upcoming LLVM {{env.config.release}} release. Release notes for previous releases can be found on [the Download Page](https://releases.llvm.org/download.html). ```
This document contains the release notes for the LLVM Compiler Infrastructure, release {{env.config.release}}. Here we describe the status of LLVM, including major improvements from the previous release, improvements in various subprojects of LLVM, and some of the current users of the code. All LLVM releases may be downloaded from the LLVM releases web site.
For more information about LLVM, including information about the latest release, please check out the main LLVM web site. If you have questions or comments, the Discourse forums is a good place to ask them.
Note that if you are reading this file from a Git checkout or the main LLVM 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 page.
It is no longer permitted to inspect the uses of ConstantData. Use count APIs will behave as if they have no uses (i.e. use_empty() is always true).
The nocapture
attribute has been replaced by captures(none)
.
The constant expression variants of the following instructions have been removed:
mul
Updated semantics of llvm.type.checked.load.relative
to match that of llvm.load.relative
.
Inline asm calls no longer accept label
arguments. Use callbr
instead.
Updated semantics of the callbr
instruction to clarify that its ‘indirect labels’ are not expected to be reached by indirect (as in register-controlled) branch instructions, and therefore are not guaranteed to start with a bti
or endbr64
instruction, where those exist.
TargetIntrinsicInfo
class).fmaximum
and fminimum
in atomicrmw
instruction. The comparison is expected to match the behavior of llvm.maximum.*
and llvm.minimum.*
respectively.execute-only
target feature, which indicates that the generated program code doesn't contain any inline data, and there are no data accesses to code sections. On ELF targets this property is indicated by the SHF_AARCH64_PURECODE
section flag. (#125687, #132196, #133084)Enabled the FWD_PROGRESS bit for all GFX ISAs greater or equal to 10, for the AMDHSA OS.
Bump the default .amdhsa_code_object_version
to 6. ROCm 6.3 is required to run any program compiled with COV6.
Add a new amdgcn.load.to.lds
intrinsic that wraps the existing global.load.lds intrinsic and has the same semantics. This intrinsic allows using buffer fat pointers (ptr addrspace(7)
) as arguments, allowing loads to LDS from these pointers to be represented in the IR without needing to use buffer resource intrinsics directly. This intrinsic is exposed to Clang as __builtin_amdgcn_load_to_lds
, though buffer fat pointers are not yet enabled in Clang. Migration to this intrinsic is optional, and there are no plans to deprecate amdgcn.global.load.lds
.
small
to medium
for 64-bit.q
constraint.-mcpu=i6400
and -mcpu=i6500
were added.log-vrgather
cost model for vrgather.vv
instructionqci-nest
and qci-nonest
interrupt types, which use instructions from Xqciint
to save and restore some GPRs during interrupt handlers.Xqcili
is enabled, qc.e.li
and qc.li
may now be used to materialize immediates..option exact
, which disables automatic compression, and branch and linker relaxation. This can be disabled with .option noexact
, which is also the default.-mcpu=xiangshan-kunminghu
was added.-mcpu=andes-n45
and -mcpu=andes-nx45
were added.-mcpu=andes-a45
and -mcpu=andes-ax45
were added.Zsfmclic
for the M-mode registers and Zsfsclic
for the S-mode registers.XAndesperf
(Andes Performance extension).-mcpu=sifive-p870
was added.XAndesvpackfph
(Andes Vector Packed FP16 extension).XAndesvdot
(Andes Vector Dot Product extension).Q
(Quad-Precision Floating Point) extension.-mcpu=andes-a25
and -mcpu=andes-ax25
were added.Shlcofideleg
extension was added.-mcpu=sifive-x390
was added.fp128
is now passed indirectly, meaning it uses the same calling convention as i128
.fp128
will now use *f128
libcalls on 32-bit GNU targets as well.The following functions for creating constant expressions have been removed, because the underlying constant expressions are no longer supported. Instead, an instruction should be created using the LLVMBuildXYZ
APIs, which will constant fold the operands if possible and create an instruction otherwise:
LLVMConstMul
LLVMConstNUWMul
LLVMConstNSWMul
Added LLVMConstDataArray
and LLVMGetRawDataValues
to allow creating and reading ConstantDataArray
values without needing extra LLVMValueRef
s for individual elements.
Added LLVMDIBuilderCreateEnumeratorOfArbitraryPrecision
for creating debugging metadata of enumerators larger than 64 bits.
--update-section
flag for intermediate Mach-O object files.--discard-locals
and --discard-all
now allow and preserve symbols referenced by relocations. (#47468)show-statusline
and statusline-format
settings. It is not currently supported on Windows.min-gdbserver-port
and max-gdbserver-port
options have been removed from lldb-server
's platform mode. Since the changes to lldb-server
's port handling in LLDB 20, these options have had no effect.process continue --reverse
when used with debug servers supporting reverse execution, such as rr. When using reverse execution, process continue --forward
returns to the forward execution.stop reason = SIGSEGV: sent by tkill system call (sender pid=649752, uid=2667987)
thread siginfo
.A wide variety of additional information is available on the LLVM web page, in particular in the documentation section. The web page also contains versions of the API documentation which is up-to-date with the Git version of the source code. You can access versions of these documents specific to this release by going into the llvm/docs/
directory in the LLVM tree.
If you have any questions or comments about LLVM, please feel free to contact us via the Discourse forums.