LLVM Weekly - #597, June 9th 2025

LLVM Weekly - #597, June 9th 2025

If you prefer, you can read the canonical version of this issue at https://llvmweekly.org/issue/597.

Welcome to the five hundred and ninety-seventh 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 call for proposals for the LLVM Developers’ Meeting is open. Submissions are due by July 15th. The event will take place on October 28th-29th in Santa Clara.

Matt Godbolt has written up a blog post on how Compiler Explorer works in 2025.

According to the LLVM Calendar in the coming week there will be the following:

  • Office hours with the following hosts: Aaron Ballman, Alexey Bader, Alina Sbirlea, Kristof Beyls, Johannes Doerfert
  • Online sync-ups on the following topics: Flang, alias analysis, modules, libc++, SPIR-V, BOLT, OpenMP for Flang, memory safety.
  • For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.

On the forums

LLVM commits

  • The size of the MC instruction decoder table was reduced by 5-30% across different targets by changes to the decoder opcode representation. e53ccb7.

  • A SimplifyTypeTests pass was introduced. 3fa231f.

  • In order to avoid the need for targets to define MCTargetExpr subclasses just to encode an expression with a relocation specifier, MCSpecifierExpr was introduced. 97a32f2, 4a6b4d3, and more.

  • The new HashRecognize analysis was introduced, which will recognise polynomial hashes (e.g. to help select CRC instructions). af2f8a8.

  • MachineCopyPropagation now performs instruction simplification (TargetInstrInfo::simplifyInstruction) iteratively, which catches more cases than before. e723e15.

  • The RISC-V backend now materialises constants using lui and addi rather than lui and addiw on RV64 whenever possible, which provides more opportunities for memory offset folding. This reduces the dynamic instruction count of the 519.lbm_r benchmark by 4%. 3d2650b.

  • Various LLVM interfaces have been annotated for DLL export, as part of the work to (in the future) support an LLVM Windows DLL (shared library) build. 7dc5dc9.

  • Initial support was implemented for SVE unwind on Windows AArch64. 6f64a60.

  • IRMover no longer considers opaque types isomorphic to other types. bb75f65.

  • A scheduling model was implemented to the RISC-V backend for the Andes 45 series processor. 991d754.

  • LoopAccessAnalysis now has an option to keep the runtime pointer checks for the pointer that it could analyse even when there are some that it can’t. 81d3189.

  • LLVM’s libc is no longer included in builds with LLVM_ENABLE_PROJECTS=all. 52ad274.

  • The machine scheduler’s instruction clustering was improved. 0487db1.

Clang commits

  • libclang’s ABI and API stability was documented. It includes a non-exhaustive list of cases where ABI and API breaking changes may occur. ab650c6.

  • The -CCC_OVERRIDE_OPTIONS option was documented. 95ea436.

  • __builtin_get_vtable_pointer was added. 93314bd.

  • The new cfi_unchecked_callee attribute can be used to prevent the compiler from instrumenting Control Flow Integrity checks on indirect function calls. b194cf1.

Other project commits

  • Building libclc by including it in LLVM_ENABLE_PROJECTS was deprecated. LLVM_ENABLE_RUNTIMES should be used instead. 6306f0f.

  • libc++'s priority_queue is now constexpr for C++26. 3e5fd77.

  • Unroll patterns and a blocking pass was added for the MLIR XeGPU dialect. 0210750.

  • A new isMaskTriviallyFoldable helper was added to MLIR’s vectorization hooks, and createWriteOrMaskedWrite gained a new parameter for write indices. b4b86a7.

  • LLVM’s OpenMP library can now be built for SPARC. 3f8827e.

Because the C++ Standards committee meets the week after this one, Clang C/C++ Language Working Group decided to meet this Wednesday too, at the usual time slot (11 AM till 12 PM Eastern Time).