This document contains the release notes for the LLVM Compiler Infrastructure, release 11.0.0. 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 LLVM Developer’s Mailing List is a good place to send them.
Back up and restore x18 in functions with windows calling convention on non-windows OSes.
Clearly error out on unsupported relocations when targeting COFF, instead of silently accepting some (without being able to do what was requested).
Implemented codegen support for the SVE C-language intrinsics documented in Arm C Language Extensions (ACLE) for SVE (version 00bet5). For more information, see the clang 11 release notes.
Added support for Armv8.6-A:
Assembly support for the following extensions:
Assembly and intrinsics support for the Armv8.6-A Matrix Multiply extension for Neon and SVE vectors.
Support for the ARMv8.2-BF16 BFloat16 extension. This includes a new C-level storage-only __bf16 type, a BFloat IR type, a bf16 MVT, and assembly and intrinsics support.
Added support for Cortex-A34, Cortex-A77, Cortex-A78 and Cortex-X1 cores.
Implemented C-language intrinsics for the full Arm v8.1-M MVE instruction set. <arm_mve.h> now supports the complete API defined in the Arm C Language Extensions.
Added support for assembly for the optional Custom Datapath Extension (CDE) for Arm M-profile targets.
Implemented C-language intrinsics <arm_cde.h> for the CDE instruction set.
Clang now defaults to -fomit-frame-pointer when targeting non-Android Linux for arm and thumb when optimizations are enabled. Users that were previously not specifying a value and relying on the implicit compiler default may wish to specify -fno-omit-frame-pointer to get the old behavior. This improves compatibility with GCC.
Added support for Armv8.6-A:
Assembly and intrinsics support for the Armv8.6-A Matrix Multiply extension for Neon vectors.
Support for the ARMv8.2-AA32BF16 BFloat16 extension. This includes a new C-level storage-only __bf16 type, a BFloat IR type, a bf16 MVT, and assembly and intrinsics support.
Added support for CMSE.
Added support for Cortex-M55, Cortex-A77, Cortex-A78 and Cortex-X1 cores.
The Machine Outliner is now supported for ARM and Thumb2, it is not turned on by default and can be enabled with the -moutline clang flag.
Optimization:
Codegen:
AIX Support Improvements:
New features:
Improvements:
Bug fixes:
Zig is a general-purpose programming language and toolchain for maintaining robust, optimal, and reusable software. In addition to supporting LLVM as an optional backend, Zig links Clang and LLD to provide an out-of-the-box cross compilation experience, not only for Zig code but for C and C++ code as well. Using a sophisticated caching system, Zig lazily builds from source compiler-rt, mingw-w64, musl, glibc, libcxx, libcxxabi, and libunwind for the selected target - a “batteries included” drop-in for GCC/Clang that works the same on every platform.
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 mailing lists.