LLVM Clang 19 Branched, LLVM 20 Enters Development- No AMD Zen 5 "Znver5" Merged Yet
As scheduled, LLVM Clang 19 was branched from mainline Git this morning and is now considered feature frozen ahead of its planned September release. LLVM Clang 20 in turn is now in development with the main Git branch.
LLVM Clang 19 (to be released as LLVM/Clang 19.1 in September as the stable release per their current versioning scheme) is the newest six-month feature update to this open-source compiler. The LLVM Clang 19.1-rc1 release candidate is expected in the coming days and at least two release candidates expected in August. If all goes according to plan, LLVM/Clang 19.1 stable will be out around 3 September.
LLVM 19 adds support for a number of new Arm cores such as the Neoverse N3 / V3 / V3AE, initial AMD GFX12 (RDNA4) support, improvements to the LoongArch backend, Memory Model Relaxation Annotations (MMRAs), support for more RISC-V ISA extensions, removal of Intel Knights Mill / Knights Landing support, Intel Branch Hint, a generic MLIR to SPIR-V pass, Apple M4 support, and many other additions.
The Clang 19 compiler adds more support for C23 features, improvements to BMIs for C++20 Modules, C++17 support is now considered complete, other C++20 and C++23 features completed, and enabling C2Y language support with the new "-std=c2y" option. Clang 19 also has several new warning options -- including to help in migrating codebases to C++23 and C++2C. There is also continued improvements to Clang's diagnostics capabilities. Clang 19 also removed support for AMD 3DNow! instructions.
There is a lot of nice improvements and new capabilities with LLVM 19 and Clang 19. I look forward to beginning to benchmark LLVM/Clang 19 soon.
One frustrating element is that even with the LLVM/Clang 19 branch date known in advance, LLVM/Clang 19 (or mainline LLVM Git or any open merge request for LLVM) at this time doesn't yet have the AMD Zen 5 "znver5" target added. Even though GCC 14 merged Znver5 and that landed back in March to make for the annual GCC (14) stable release, months later there still isn't the "znver5" target in LLVM/Clang. That's even with the Znver5 GCC support being out for months and AMD since detailing the Zen 5 changes and on the heels of the Ryzen AI 300 series and Ryzen 9000 series product launches as the first Zen 5 products.
LLVM is a bit more lenient in allowing new compiler targets to be added later in the cycle or back-porting new targets to new LLVM point releases, but given we are days out from seeing the first Zen 5 products in retail channels and the LLVM 19 branch date being known, it's sad to see Znver5 support not yet merged. Hopefully we will see it merged and then back-ported in time for the September release of LLVM 19.1 and not come as a later point release that in turn might not be picked up by some Linux distribution packages in time for their autumn OS releases like say Ubuntu 24.10. It was great seeing Znver5 make it early for GCC 14 but for LLVM/Clang it's running late and also still a ways off from Intel's approach of often having new CPU targets added to the open-source compilers a year or more in advance to allow the support to work its way out to the various Linux distributions and software repositories well in advance of product launches.
Those wanting to try out the LLVM/Clang 19 compiler from source or track its progress toward release can now find the branched code via LLVM's release/19.x branch.
LLVM Clang 19 (to be released as LLVM/Clang 19.1 in September as the stable release per their current versioning scheme) is the newest six-month feature update to this open-source compiler. The LLVM Clang 19.1-rc1 release candidate is expected in the coming days and at least two release candidates expected in August. If all goes according to plan, LLVM/Clang 19.1 stable will be out around 3 September.
LLVM 19 adds support for a number of new Arm cores such as the Neoverse N3 / V3 / V3AE, initial AMD GFX12 (RDNA4) support, improvements to the LoongArch backend, Memory Model Relaxation Annotations (MMRAs), support for more RISC-V ISA extensions, removal of Intel Knights Mill / Knights Landing support, Intel Branch Hint, a generic MLIR to SPIR-V pass, Apple M4 support, and many other additions.
The Clang 19 compiler adds more support for C23 features, improvements to BMIs for C++20 Modules, C++17 support is now considered complete, other C++20 and C++23 features completed, and enabling C2Y language support with the new "-std=c2y" option. Clang 19 also has several new warning options -- including to help in migrating codebases to C++23 and C++2C. There is also continued improvements to Clang's diagnostics capabilities. Clang 19 also removed support for AMD 3DNow! instructions.
There is a lot of nice improvements and new capabilities with LLVM 19 and Clang 19. I look forward to beginning to benchmark LLVM/Clang 19 soon.
One frustrating element is that even with the LLVM/Clang 19 branch date known in advance, LLVM/Clang 19 (or mainline LLVM Git or any open merge request for LLVM) at this time doesn't yet have the AMD Zen 5 "znver5" target added. Even though GCC 14 merged Znver5 and that landed back in March to make for the annual GCC (14) stable release, months later there still isn't the "znver5" target in LLVM/Clang. That's even with the Znver5 GCC support being out for months and AMD since detailing the Zen 5 changes and on the heels of the Ryzen AI 300 series and Ryzen 9000 series product launches as the first Zen 5 products.
LLVM is a bit more lenient in allowing new compiler targets to be added later in the cycle or back-porting new targets to new LLVM point releases, but given we are days out from seeing the first Zen 5 products in retail channels and the LLVM 19 branch date being known, it's sad to see Znver5 support not yet merged. Hopefully we will see it merged and then back-ported in time for the September release of LLVM 19.1 and not come as a later point release that in turn might not be picked up by some Linux distribution packages in time for their autumn OS releases like say Ubuntu 24.10. It was great seeing Znver5 make it early for GCC 14 but for LLVM/Clang it's running late and also still a ways off from Intel's approach of often having new CPU targets added to the open-source compilers a year or more in advance to allow the support to work its way out to the various Linux distributions and software repositories well in advance of product launches.
Those wanting to try out the LLVM/Clang 19 compiler from source or track its progress toward release can now find the branched code via LLVM's release/19.x branch.
2 Comments