LLVM Weekly - #616, October 20th 2025
Welcome to the six hundred and sixteenth 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
Anthony Tran wrote on the LLVM blog about usability improvements for the Undefined Behavior Sanitizer implemented as part of GSoC.
Timm Baeder blogged about recent developments for the Clang bytecode interpreter.
The next LLVM Bay Area Monthly meetup will take place on Monday October 27th.
According to the LLVM Calendar in the coming week there will be the following:
- Office hours with the following hosts: Kristof Beyls, Johannes Doerfert, Amara Emerson.
- Online sync-ups on the following topics: ClangIR, pointer authentication, vectoriser improvements, OpenMP, Flang, RISC-V, LLVM libc, HLSL.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
Petr Hosek provided an update on plans to require pull requests for all llvm-project commits. The next step is to enable the restriction but given everyone the ability to bypass it.
Henrik G. Olsson started a conversation on adding new command line options for controlling llvm-lit output. For instance, providing finer grained control for aspects such as whether test results are printed during testing or in a summary at the end.
Reid Kleckner reported back on the CMake option for 64-bit source location RFC based on the discussion in the area team meeting. I don’t think I can make a more effective summary than Reid’s very clear bulletpoint listing, so I encourage you to go and read that!
Rahman Lavaee posted an RFC on extending the PGO analysis map with Propeller CFG frequencies.
Rahul Joshi queried when to use Twine vs StringRef as a function argument in LLVM.
The LLVM Code of Conduct Committee shared this year’s Code of conduct Transparency report. Thank you to the committee for their hard work in this period.
Serge Pavlov proposed introducing new generic DAG nodes for floating-point operations, whereby the same node is used for both default and strictfp environments rather than duplicating each operation with a strict and non-trict node.
Ben Stott started an RFC thread on reducing process creation overhead in LLVM regression tests, nothing that on Windows in particular the overhead from the many processes spawned during check-llvm can be substantial. From the responses so far, there is support fr looking for ways of reducing this overhead, but some concerns that the approach presented in the RFC might not be the best way to do so.
Yury Plyakhin proposed the addition of SYCLBIN, a format for SYCL device code.
Jiachen Yuan raised the issue of running out of LaneBitMask bits.
Maksim Levental started an RFC discussion on upgrading LLVM’s minimum required Python version. This triggered a lengthy discussion about topics such as level of testing, what a sufficient bar is for opting to increase the minimum version, and so on.
Nikita Popov suggested deprecating C API functions using the global context, noting that a common source of mistakes is to accidentally mix APIs using the global context and those using an explicit context.
LLVM commits
-print-debug-counter-querieswas added to print the current value of the counter and whether it is executed/skipped each time it is queried. 9ace311.An arbitrary number of cases can now be used in LLVM’s
StringSwitch. 8642762.Register usage debug printing at the point of maximum register pressure was implemented for AMDGPU. 8823efe.
An
llvm.dx.resource.getdimensions.xintrinsic was added. 78d9816.IndVarSimplifylearned to better optimise some loops with thread-local writes. 39b0cbe.BlockFrequencyInfo is no longer used in SimpleLoopUnswitch, which was the last loop pass using it. df89564.
Codegen was implemented for the RISC-V Zvfbfa extension. 0727e7a.
Clang commits
The
core.NullPointerArithmchecker was introduced, which will find undefined arithmetic operations with null pointers. 8570ba2d.X86
PSHUFBintrinsics can now be used in constexpr. 140d465.clang-format’s algorithm for continuing aligned lines was improved. a0b8261.
Other project commits
The MultiMemRead packet for LLDB’s debugserver was both documented and implemented. It reads memory from multiple memory ranges. e91786a, 5e668fe.
A new
lower-workdistributepass was added to Flang that will operate on lowered Fortran array statements and perform various rewrites and optimisations. f4fe714.libcxx
std::distanceandstd::ranges::distancewere optimised for segmented iterators. As this reduced the complexity fromO(n)there are some big gains in the microbenchmarks. fd08af0.The MathToXeVM and GPUToXeVM passes were added to MLIR. 3f3ffed, 89d1143.
The Wasm binary to WasmSSA MLIR importer now supports control flow operations, comparison operations, and conversion operations. e40f215.
Polly’s
PolyhedralInfopass (an experiment to make Polly’s analysis available to other passes) was removed as its implementation was very tied to the legacy pass manager. c46fec8.