LLVM Weekly - #624, December 15th 2025
Welcome to the six hundred and twenty-fourth issue of LLVM Weekly, a weekly newsletter (published every Monday) covering developments in LLVM, Clang, and related projects. LLVM Weekly is brought to you by Alex Bradbury. Subscribe to future issues at https://llvmweekly.org and pass it on to anyone else you think may be interested. Please send any tips or feedback via email: asb@asbradbury.org, or Mastodon: @llvmweekly@fosstodon.org / @asb@fosstodon.org, or Bluesky: @llvmweekly.org / @asbradbury.org.
News and articles from around the web and events
My Igalia colleague Luke Lau wrote the first part of a blog series on closing
the performance gap between Clang/LLVM RISC-V and
GCC. This part covers
methodology, LNT, and how fixing a failure to select fmsub give a ~1.8%
improvement in instruction count.
Miguel Cárdenas wrote on the LLVM project blog about their GSoC project to provide new visualisation tools (see a demo here).
The next Portland area LLVM social will take place on December 18th. Note the new location.
According to the LLVM Calendar in the coming week there will be the following.
- Office hours with the following hosts: Phoebe Wang Johannes Doerfert.
- Online sync-ups on the following topics: ClangIR upstreaming, pointer authentication, vectoriser improvements, security response group public sync-up, OpenMP in LLVM, Clang C/C++ language working group, Flang, RISC-V, LLVM libc, HLSL.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
Hana Dusíková is collecting input on experience with
[[clang::musttail]]. There is some discussion in the responses about the C committee proposal forreturn goto.There’s been an incredible amount of back and forth discussion on the floating point minimum and maximum operations RFC. Nikita Popv posted a summary of facts and proposed next steps.
Andrzej Warzynski started an RFC discussion on whether the MLIR vector dialect should introduce vector.compressstore and vector.expandload ops.
Anutosh Bhat is seeking feedback on a proposal to implement a flang interpreter that could be the basis of a Jupyter Fortran kernel.
Andrzej Warzynski wrote up some 2025 highlights for the MLIR vector dialect.
Matt Bentley shared some notes on an alternative implementation approach for the proposed
std::hivedatastructure.Meeting notes from the last LLVM project council meeting are now available.
There has been some further discussion on the the SFrame RFC, where Nikita Popov has now written up some thoughts.
Clément Fournier shared the zsh plugin they’ve created to help with using mlir-opt in the terminal.
Rahul Joshi started a discussion about using variadic
isa<>in LLVM code noting that it is used widely in the MLIR codebase but there was some pushback elsewhere within LLVM.
LLVM commits
Modifying
BlockFrequencyInfoto usegetPredBlockCostDivisorresulted in a 7% speedup for the 531.deepsjeng_r benchmark on RISC-V. e8219e5.ConstantInt::get()now has anImplicitTruncparameter (true by default for now). It will be switch to false in the future to help guard against case where unintended truncation may be taking place. 7b65219.An
llvm::reverse_conditionally()iterator was added, which allows conditionally iterating a colleciton in reverse. 9a5fa30, 085dc63.The LoadStoreVectorizer now implements a gap filling optimisation, aiming to fill in hols in otherwise contiguous load/store chains to enable vectorisation. It can also extend the end of a chain to the closest power of two. 5c8c7f3.
llvm.experimental.vp.splatwas removed. 86c5539.An Apple M5/A19 CPU definition was added. f85494f.
In LLVM IR, switch case values are no longer stored as operands and are instead stored more efficiently as a simple array of pointers after the uses. 6813f8f.
llvm-lit now has an option to re-run only the tests that failed during the previous run. 04ce013.
Clang commits
Clang was updated to use the data layouts from LLVM’s TargetParser as opposed to maintaining its own copies of them. 9dc3255.
-fdevirtualize-speculativelycan be used to opt-in to the speculative devirtualisation optimisation. 9e7ce77.Basic support for data member pointers was added to ClangIR. 87bf5ee.
Support for
deferin C was added (needs-fdefer-ts). The implements the draft specification. 71bfdd1.clang-docHTML generation now uses the Mustache backend. 24117f7.
Other project commits
A baremetal version of the compiler-rt profile library was added. bc0d0bb.
A policy was added for when LLVM libc ports can be ‘sunsetted’ (removed). 2797688.
A WebAssembly ‘platform’ was added to LLDB. The commit message gives an example of using it to launch binaries under the WebAssembly Micro Runtime. 8d59cca.
MLIR pass instrumentation can now signal failures such as failed invariant checks. 6b7b0ab.