LLVM Weekly - #591, April 28th 2025
Welcome to the five hundred and ninety-first 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 agenda for 2025 AsiaLLVM has now been posted.
The next LLVM Berlin meetup will take place on June 5th.
Romain Thomas blogged about using libFuzzer to fuzz a Windows Arm64 closed-source binary.
GCC 15 was released. Also see Red Hat’s blog post on new C++ features in GCC 15.
According to the LLVM calendar in the coming week there will be the following:
- Office hours with the following hosts: Johannes Doerfert, Renato Golin.
- Online sync-ups on the following topics: Flang, MLIR Tensor compiler, modules, SPIR-V, OpenMP for flang, HLSL working group, memory safety working group, MLGO.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
Kevin Sala Penades proposed a flexible and customisable new code instrumentation framework for LLVM. This would allow JSON to be used to describe the types of instructions thta should be instrumented and how.
Peter Collingbourne would like to improve the reproducibility of linker benchmarking with a new reproducible Nix-based suite.
Tom Tromey queried support for dynamic sizes and field offsets in DWARF, motivated by an LLVM-based Ada compiler. This generated responses from a number of other language frontend developers.
“byrnesj1” started a discussion about the computeKnownBits recursion depth limit and case where the current limit can lead to missed optimisations.
Andrzej Warzynski shared a summary of the MLIR vector dialect roundtable discussion at EuroLLVM.
David Spickett suggested making it clearer what the different release package types are and their purpose.
Alex Zinenko shared the latest MLIR area team meeting minutes.
Nikita Popov reported back on investigations into removing type mutability in LLVM IR, noting some challenges.
LLVM commits
CodeGenPrepare learned to unfold popcount when used in power-of-two tests. 5080a02.
llvm-extract now supports unnamed basic blocks. 8a57df6.
A large TargetTransformInfo refactoring was landed, replacing “concept based polymorphism” with the PImpl (pointer to implementation) idiom. bb17651.
Details of the LLVM CoC appeal process were clarified. a5a6ae1.
Additional types of stores are now supported in DebugInfo assignment tracking. 928c333.
The
LLVM_ABI_FRIEND
macro was introduced for friend function declarations. c049583.The AMDGPU backend gained support for block load/store of callee saved registers. 5bad5d8.
The ForwardHandleAccesses pass was added to the DirectX backend. a83b4a2.
computeKnownBits
was taught to use range metadata foratomic_load
. f261f14.The
AssertNoFPClass
SelectionDAG node was introduced, which can be used to mark a value we are sure isn’t some fp class type. f0c61d2.
Clang commits
As usual, further work on ClangIR upstreaming. e.g. StackSave and StackRestoreOp as part of support for variable length arrays. Also support for accessing structure members. 80872d7, 21bc23e.
Clang now supports copying records with fields using pointer authentication. 5b16941.
Various enhancements were made to alpha.webkit.RetainPtrCtorAdoptChecker. 16e5c3d.
Other project commits
MLIR’s generate-test-checks.py was updated to preserve original SSA names when generating LIT variable names for function arguments. 7ff3d3b.
The OpenMP API features supported by Flang were documented. 2c2ba7e.
The Fortran standards supported in Flang were documented. 45a3056.
The Wasm linker can now be safely invoked multiple times within the same process 9cbbb74.