LLVM Weekly - #623, December 8th 2025
Welcome to the six hundred and twenty-third 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
The call for proposals is now open for EuroLLVM 2026. Submit your proposal by 11th January 2026. EuroLLVM will take place in April in Dublin.
Additional recordings from the 2025 US LLVM Developers' Meeting have been appearing on YouTube and they are now collected together in a handy playlist.
Miguel Cárdenas wrote on the LLVM blog about their GSoC project, Making LLVM Compilation Data Accessible: A Unified Visualization Tool for Compiler Artifacts.
My Igalia colleague Mikhail R. Gadelha has written up a blog post version of a talk delivered at the RISC-V Summit earlier this year about improving LLVM generated code performance for RISC-V.
According to the LLVM Calendar in the coming week there will be the following.
- Office hours with the following hosts: Aaron Ballman, Alexey Bader, Alina Sbirlea, Kristof Beyls, Johannes Doerfert.
- Online sync-ups on the following topics: formal specification, Flang, modules, lifetime safety, LLVM/offload, SPIR-V, OpenMP for flang, HLSL.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
Alina Sbirlea and others are establishing a working group on formal specification for LLVM IR. The kickoff meeting already took place earlier today, but a recurring meeting will be added to the LLVM calendar and I’m sure notes will be shared.
Chad Smith posted an RFC on flow-sensitive nullability, aiming to make Clang catch more null errors earlier. Yitzhak Mandelbaum shared a perspective from Google which featured an interesting (to me) tidbit “From our analysis, Nullable is the wrong default. Of the hundreds of millions of lines of code we’ve analysed, Nonnull is far more prevalent. In third-party libraries we import, the ratio is 4:1 and in our own code (for historical reasons) 6:1. So, Nonnull as the default is preferred from the perspective of reducing syntactic noise.”
Stefan Gränitz kicked off an RFC discussion on introducing a reference pass plugin for LLVM, with a goal of using it to improve the infrastructure for pass-plugins in upstream LLVM through things like end-to-end tests running on bots. Stefan points to examples like Polly or Enzyme as existing pass-plugins.
Britton Watson is seeking volunteers for the EuroLLVM student travel grant committee.
LLVM 21.1.7 was released. Note the comment about a potential ABI break.
Felipe de Azevedo Piovezan queried what the current status is for using
sprfor stacked pull requests.Donát Nagy wrote up plans for improving the Clang checkers that report out-of-bounds errors.
Grigory Pastukhov would like to introduce a
flatten_depth(N)attribute to Clang to allow inlining up to a specified depth.Keith Smiley started a discussion on llvm-dsymutil performance, receiving some ideas from long time dsymutil maintainer Jonas Devlieghere.
Volodymyr Turanskyy shared an RFC on running libc baremetal tests on Arm using qemu.
LLVM commits
The
DebugCounterimplementation was optimised and as a result debug counters are now also enabled in non-assert release builds. 042a38f, d0f5a49.The norms of the current LLVM community RFC process were documented. 4424a58.
The RISC-V backend learned to use the Zicond conditional move instructions for floating point selects once Zfinx/Zdinx is present (i.e. when there is no separate FPR so GPRs are used for floats). 2e21bb8.
A new
getOrInsertDeclarationoverload was added which allows an intrinsic declaration to be inserted with overload types being deduced from the provided return type and argument types if necessary. 822fc44.The Hexagon backend gained target-specific passes for widening vector operations and for optimising shuffles. 4da31b6.
An
llvm.protected.field.ptrintrinsic was added. 4afc256.Intrinsics may now be used with
callbr. e84fdbe.A new llvm-reduce pass will sink defs to uses, aiming to reduce live range ranges. 097e0e1.
The LLVM IR
Modulegained a new API to help iterate over just the function definitions (i.e. excluding declarations). 82f7d3c.
Clang commits
Clang’s lifetime analysis can now suggest the insertion of missing
[[clang;:lifetimebound]]annotations. 5a74f7e.The
modular_formatfunction attribute can now be specified. This is used to e.g. enable selecting a smaller printf implementation if not all functionality is needed. d041d5d.A document was added detailed plans to deal with code duplication in the ClangIR codegen implementation. 6d8714b.
Other project commits
A
show_descriptorintrinsic was implemented in flang, which will print details of a descriptor (extended Fortran pointer). 4b2714f.LLVM’s libc now has finer grained control over the selection of higher performance function implementations. 8701c2a.
libcxx can now be used with newlib as the libc, including locale support. 72402e8.
A new LLDB instrumentation plugin was added for
-fbounds-safetysoft trap mode. The matching functionality isn’t implemented in Clang yet. e27dec5.A new
breakpoint addsubcommand was added to LLDB, aiming to supplantbreakpoint set. 2110db0.