LLVM Weekly - #603, July 21st 2025
Welcome to the six hundred and 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 first LLVM Seattle Meetup of the year will take place on August 2nd featuring talks “High-level overview of MSVC’s Address Sanitizer” by David Justo and “Beginner-friendly introduction to MLIR” by Shubh Pachchigar.
According to the LLVM Calendar in the coming week there will be the following:
- Office hours with the following hosts: Johannes Doerfert, Amara Emerson.
- Online sync-ups on the following topics: Flang, modules, lifetime safety, LLVM/Offload, SPIR-V, OpenMP for Flang, HLSL, memory safety working group.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
The LLVM 21.x release branch was created and llvm 21.1.0-rc1 was released. The main branch has been bumped to 22.0.0git.
Ferdinand Lemaire noted that the first PR for upstreaming the WasmSSA MLIR dialect has been opened.
Marco Elver kicked off an RFC discussion on allocator partitioning hints. This could be used to aid a hardened memory allocator, taking advantage of additional semantic information about the managed allocations.
On behalf of the LLVM Project Council, Alex Zinenko provided an update on the MLIR Project Maintainers nominations. The proposed category maintainers are moving forward, but proposal of “Lead MLIR Project Maintainers” is awaiting further clarity on the scope of responsibilities.
Nicholas Junge shared a public service announcement on changes to MLIR Python type casters.
“Leilongjie2000” started an RFC discussion on missed LoopStrengthReduce opportunities for outer loops containing iner loops, including the SPEC CPU 2017 648.exchange2_s benchmark.
Vlad Serebrennikov provided data on the volume of historical bug reports related to the source locations limit in Clang as input to the discussion on revisiting 64-bit source locations.
“isuckatcs” shared initial results from a Clang summary-based analysis prototype.
LLVM commits
-opt-disable
can now be used for disabling a pass given by name. 81eb7de.Documentation on what is considered a security issue was improved. 145b6cd.
The llvm-ir2vec tool now has documentation. f295617.
Structures and constants for the “SFrame” unwind info format were committed. ee9b84f.
The debuginfo “key instructions” project gained documentation describing the core ideas and some implementation details. acffe83.
Native Client support was removed from the LLVM tree. 0d2e11f.
Bundle alignment mode was removed from LLVM’s MC layer, following the Native Client removal. 28e1473.
Debug intrinsic verifier code was deleted now they are no longer produced and are always auto-upgraded. b470ac4.
Minimal big-endian RISC-V support was added to llvm-objcopy and LLVM’s ELF file support code. 742147b.
The
debugify
script gained an acceptance-test mode that produces YAML output rather than a HTML report. This is intended to be friendly to integration to CI. b7c14b6.
Clang commits
As part of the lifetime safety work, dataflow analysis for loan propagation was implemented and a script added for performance benchmarking. It was later made more generic. f25fc5f, 7615503, 752e31c.
Documentation was added on C++ type-aware allocators. 7cde974.
Pointer authentication can now be used in Objective-C. 451a9ce.
Integrated Distributed ThinLTO (DTLTO) flags were added to Clang. 5004c59.
Clang learned to set the
dead_on_return
attribute for arguments passed indirectly. 9e0c06d.Infrastructure was added to allow clang-repl to pretty print types. 9bf7d04.
Other project commits
compiler-rt now has runtime functions for emulated pointer authentication codes. These are meant to be used in test environments where hardware support isn’t available. de31584.
In compiler-rt’s lit setup,
config.host_os
was renamedconfig.target_os
in order to reduce confusion. 3fa07ed.Initialisation and destruction in flang was made faster in the flang runtime. 2e53a68.
The
-fdiscard-value-names
build flag was added to libclc, reducing bitcode size of nvptx64-nvidiacl.bc from 10.6MB to 5.2MB. 9d78eb5.libcxx now has an implementation of
std::ranges::zip_transform_view
. d344c383.LLD gained support for thunks for Hexagon. b42f96b.
LLDB’s disassembly of unknown instructions was improved. Especially for the case where the size of the instruction is known but it is unrecognised (as may happen for RISC-V with an unrecognised vendor extension). eb6da94.
LLDB documented running of its tests using qemu-user. 9f364fe.
An MLIR “pattern catalog” generator was added. This could be used to make a website that allows looking up patterns from an operation name. 7caf12d.