LLVM Weekly - #639, March 30th 2026
Welcome to the six hundred and thirty-ninth 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 next Munich LLVM meetup will take place on 22nd April and the organisers are accepting proposals to fill their two talk slots.
The final meeting working towards the C++26 standard has taken place, see Herb Sutter’s trip report for more information.
According to the LLVM Calendar in the coming week there will be the following:
- Office hours with the following hosts: Quentin Colombet, Johannes Doerfert.
- Online sync-ups on the following topics: Flang, modules, lifetime safety, LLVM/Offload, Clang C and C++ language working group, OpenMP, OpenMP for Flang, HLSL, MLGO, reflection.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
Jan Korous and Ziqing Luo proposed clang-reforge, an approach for whole-code source code rewriting for security hardening. The RFC outlines the various components, the implementation algorithm, and the motivation. “We propose creating clang-reforge, a whole codebase automatic source code rewriting tool that will change the code to be bounds-safe according to the C++ Safe Buffers definition. […] We also propose creating bounds-safe alternatives to built-in C++ pointers and fixed size arrays that would work as drop-in replacements. The focus and purpose of these APIs will be enabling automatic large-scale adoption. In other words, we want to create them so it is feasible to write automatic adoption tools that will use them as replacements for built-in types.”
Russell Gallop started a discussion on removing the Clang version number from the resource directory in a distribution.
Asher Dobrescu provided a summary of discussions on the proposal for large-bolt-tests.
Federico Bruzzone is interested in any data on the individual contribution of LLVM passes to runtime performance.
It looks like I somehow missed this thread on introducing an equivalent of MSVC’s “Dynamic Debugging” feature to LLVM. Orlando Cazalet-Hyams has helpfully summarised the pros/cons. David Blaikie shared some perspective on evaluating the proposal. ‘Just highlighting a few things here - Sony proposing this aren’t asking “is this a design you would use” they’re asking “is this a design the LLVM project can accept the cost of, assuming we (Sony) are doing the work, and we (Sony) have decided it’s worth our time to do”. Also, they’ve already prototyped it - so presumably they’re pretty confident that it’s a relevant feature for their users - they’ve put substantial time/money into that already.’
Maksim Levental posted an RFC on enabling a ‘unity’ build for faster build times. Much of the discussion is about the scenarios where this would be helpful and whether it makes sense to pursue this in addition to PCH.
LLVM 22.1.2 was released.
Henrik G. Olsson started a discussion on updating the semantics of the
noescapeattribute.
LLVM commits
A new command line option and TargetLowering hook was added to enable DAG topological sorting. The hope is to ultimately move DAG combines to be processed in topological order. 207598a.
Support was added for the FPU used in the MIPS R5900 processor used in the PlayStation 2 “Emotion Engine”. 98fe2fb.
A custom loop strength reduction cost model was implemented for AMDGPU. 621fc87.
PointerUnion now supports additional variants through a variable-length encoding. 6e916d0.
As part of the efforts to incrementally upstream changes needed for CHERI support,
@llvm.returnaddresscan now return a pointer in any address space. ca9ac0e.LLVM’s CI best practices doc was updated to note that credentials persistence should be disabled for GitHub’s
actions/checkoutaction where possible. 8de3a47e.A resource leak in
litthat can cause virtual address space exhaustion on 32-bit systems was fixed. dfefc03.Support was added for MemorySanitizer instrumentation for Hexagon. e17c219.
Clang commits
There was some refactoring so that code related to Neon intrinsic maps can be shared by the conventional and the ClangIR codegen paths. d705957.
Clang’s bytecode interpreter adopted a tailcall-based design on supported targets using
[[clang:musttail]]. 3fcf10c.Clang learned to validate target features for PowerPC builtins during semantic analysis, catching errors earlier. 993b110.
A TableGen backend was implemented for HLSL intrinsics. daec3b9.
LLVM’s
llvm.loop.licm.disablewas exposed in the frontend through#pragma loop licm(disable). 32720fb.The
anyAppleOSplatform name was added. 6c8940c.clangd gained a new tool for remapping paths inside background index files, allowing a background index to be reused across multiple clients (which take a copy of the original and then rewrite the paths). c1ea10a.
Other project commits
BOLT’s profile format was documented. 31b17c4.
flang now understands the
-fdebug-info-for-profilingflag. 3009211.LLVM’s libc gained documentation on implementing a new function and on cross-compiling and then testing using QEMU. 4bfc9bd, b2f5992.
The Android specific
--android-memtag-*flags were replaced with-z memtag-*equivalents. ebd62d6.PlatformWebInspectorWasmwas added to LLDB, a Wasm platform that automatically connects to the WebInspector platform server. 7119610.