LLVM Weekly - #610, September 8th 2025
Welcome to the six hundred and tenth 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 open for the workshop on supporting memory safety in LLVM, taking place just before the US LLVM Developers' Meeting.
Pedro Lobo wrote on the LLVM blog about their GSoC project to add a byte type to LLVM IR.
Fangrui Song blogged about changes in the LLD 21 release.
The next LLVM meetup in Berlin will take place on 18th September, featuring Morris Hafner presenting his work on upstreaming ClangIR.
The next compilers social in Cambridge UK will take place this Friday 12th September as a full day “MLIR (Un)School Meets UK Compiler Community” event.
According to the LLVM Calendar in the coming week there will be the following:
- Office hours with the following hosts: Alexey Bader, Alina Sbirlea, Kristof Beyls, Johannes Doerfert.
- Online sync-ups on the following topics: MLIR C/C++ frontend working group, ClangIR upstreaming, alias analysis, pointer authentication, OpenMP, Flang, RISC-V, embedded toolchains, HLSL.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
Petr Hosek proposed that all unreviewed changes to the
main
branch in the llvm-project repo should go through a PR. The proposal still allows merging before CI checks finish, meaning quick fixes and reverts can still be made.Nathan Gauër started an RFC thread on adding instructions to carry GEP type traversal information. This is moivated by the SPIR-V backend, which struggle due to information loss with plain
ptradd
.Fabian Mora shared a proposal on cleaning up the MLIR GPU dialect and strengthening its semantics. The proposal suggest moving a number of its operations either to new dialects, an existing dialect (when appropriate), or removing them altogether.
Nikita Popov provided an update on work to implement an ABI lowering library for LLVM. Initial results (thanks to vortex73’s GSoC work) are positive and upstreaming should start soon.
Farid Zakaria raised the issue that as of recently, GitHub has started timing out downloads if they don’t finish in 5 minutes which poses problems for people downloading GitHub releases on a slower connection.
Erik Hogeman started a discussion on extending the current set of fast-math flags. As Nikita notes in response, we’re currently out of free bits in
llvm::Value
.“buggfg” noted that LLVM vectorization memory analysis seems to fall short in some examples vs GCC and ICX.
Rick van Voorden wondered if use of the term ‘sanity checks’ should be moved to an alternative phrase.
Quentin Colombet advertised his book, LLVM Code Generation: a deep dive into compiler backend development.
LLVM Foundation board meeting minutes from August have now been posted.
Arjun Ramesh proposed the addition of a
wasm32-wali-inux-musl
target to Clang.Tom Stellard kicked off an RFC thread on adding AArch64 pre-commit CI, with discussion revolving around exactly what sort of configurations should be tested.
LLVM commits
A new doc was started on debugging LLVM. 82978df.
The HashRecognize analysis is now used by LoopIdiomRecognize to optimize CRC. c5da190.
The
LDBG
macro was documented in the programmer manual. 5f41241.mmra
metadata was documented. e34d2e1.A VPlan-level common subexpression elimination pass was implemented. d8fd511.
InstCombine learned to merge constant offsets getlementptrs (geps) across variable geps. 349523e.
LLVM_ENABLE_STRICT_FIXED_SIZE_VECTORS
was removed. cd7f7cf.Codegen and intrinsics for the proposed RISC-V Zvqdotq “vector quad widening 4D dot product” extension was implemented. 7fb1dc0.
An
OPC_Scope
opcode was added to the DecoderEmitter, resulting in an average reduction in decoder tables of 1.1% (up to 7% in some cases). 3250349.
Clang commits
__builtin_*_synthesises_from_spaceship
where added, which makes it possible to do some optimisations by using<=>
(spaceship) rather than doing multiple comparisons. b1a8089.Support was added for C2y’s “named loops” feature. e4a1b5f.
The
alpha.core.CastSize
static analyzer checker was removed. 9086590.As usual there was more forward progress on ClangIR. e.g. adding support for constant record initializer list expressions. 1dbe65a.
clang-reorder-fields now supports designated initializers. 4d9578b.
Other project commits
Load and store operations were implemented for MLIR’s ptr dialect, and core ptr ops now have a conversion to LLVM IR implemented. 77f2560, d15998f.
LLVM’s libc now provides a
strlen
implementation, implemented using a newsimd.h
helper header. eb7b162.SPEC can now be run as part of libc++’s own benchmarks. a40930b.
lldb-dap
learned the--no-lldbinit
flag to skip sources.lldbinit
. db3054a.MLIR’s SPIR-V dialect gained support for the
SPV_ARM_graph
extension. cf3a887.