LLVM Weekly - #611, September 15th 2025
Welcome to the six hundred and eleventh 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 September Portland area LLVM social will take place on 18th September.
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: Flang, vectoriser improvements, modules, security response group, lifetime safety breakout group, LLVM/Offload, Clang C/C++ language working group, SPIR-V, OpenMP for flang, HLSL working group.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
Sebastian Pop started a thread to discuss the gradual removal of types from LLVM IR (e.g. pointers). This spawned a lot of discussion on different somewhat related topics, e.g. the criteria for enabling passes by default, the delinearization pass, and of course the future of LLVM IR. Nikita Popov gives a direct answer to the first question about why type information is being removed.
Benoit Meister posted an RFC Ripple: A Compiler-Interpreted API for Efficient SIMD Programming. “We have been working on Ripple, a lean addition to LLVM to support Single-Program, Multiple-Data (SPMD) and loop-annotation-based parallel programming for SIMD hardware. We propose a parallel programming API to support these two models, which departs from GPU-style SPMD programming, in that block computations of different dimensions (including 0) can coexist in the same function. This makes it easier to explicitly express mixes of scalar, vector and tensor computations.”
LLVM 21.1.1 was released.
Nikita Popov suggested guidelines for adding/enabling new passes.
Mehdi Amini queried the IndexType in MLIR and any assumptions about bitwidth.
Christopher Di Bella posted a Clang RFC on diagnosing disallowed pointers-to-members.
Théo Degioanni started a thread to track the roadmap for completing IRDL including effort estimates. “IRDL is a dialect to represent dialects. The aim is to offer a self-contained and portable way to define dialects, without TableGen. This thread tracks the roadmap towards a first completeness goal.”
Prabhu Rajasekaran started an RFC discussion on preserving call graph information from Clang all the way through to a
.callgraph
ELF section.Shubham Rastyogi proposes the addition of a
llvm.dbg.coroframe_entry
intrinsic, motivated by the need to describe variables in a coroutine frame prior to the CoroSplitter pass running.
LLVM commits
LLVM’s lit test suite now uses the lit internal shell by default. 73b24d2.
lit --update-tests
learned to update tests usingdiff
. 6c3f18e.The LSP (Language Server Protocol) support library moved into LLVM from MLIR. a3a2599.
SimplifyCFG will replace switch with simpler instructions in more cases than before. 89d86b6.
Profile guided outlining support was added to the MachineOutliner. ada9da7.
AArch64FrameLowering::emitPrologue
was refactored as it had grown rather large. 106eb46.As preparation for the
ptradd
migration, GEPs with multiple non-zero offsets are now split into two GEPs. a301e1a.Some of the regular administrative tasks in the LLVM project were documented. c883b67.
CHERI capability types where added to MachineValueType. 0f13cae7.
The
LDBG_OS()
macro was added, which takes a callback function that will be called withraw_ostream
. 2832717.Data layout string computation was moved to
TargetParser
. f3efbce.
Clang commits
Atomic compare-and-swap is now supported in ClangIR. 990fe80.
Clang’s Thread Safety Analysis gained a basic alias analysis for capabilities. b4c98fc.
Clang’s lifetime safety analysis was extended to support C++ types annotated with
gsl::Pointer
. 94213a4.
Other project commits
The rationale for the MLIR IRDL dialect was documented. a401f46.
BOLT’s previously x86-only pass for inlining
memcpy
was extended to support AArch64. 244588b.Scudeo grew the beginnings of a tracing framework. 7628abd.
Tiling was enabled for Flang’s OpenMP. d452e67.
libcxx now has a new
compare-benchmarks
script which can be used for printing a summary comparison of any LNT-compatible data. a6af641.The build of OpenMP device runtimes is now handled much like libc, libc++, compiler-rt etc. be6f110.