LLVM Weekly - #579, February 3rd 2025
Welcome to the five hundred and seventy-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 http://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 Cambridge (UK) compiler social will take place on 12th February including talks by George Constantinides and Alex Zinenko. Be sure to register if you plan to attend.
The delayed, but comprehensive and well worth the wait /r/cpp Wroclaw C++ committee meeting trip report is now up.
If you fancy hearing me discuss RISC-V and a little bit of LLVM, I’m featured in the most recent episode of Igalia’s podcast.
According to the LLVM calendar in the coming week there will be the following:
- Office hours with the following hosts: Quentin Colombet, Johannes Doerfert, Renato Golin.
- Online sync-ups on the following topics: Flang, MLIR C/C++ frontend, MemorySSA, LLVM/Offload, classic flang, Clang C/C++ language working group, SPIR-V, OpenMP for flang, HLSL, MLGO.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
Tanya Lattner shared more information on EuroLLVM ticket prices and hotel.
The LLVM 20.x branch happened and LLVM 20.1.0-rc1 was released.
As a reminder, voting is open for the area team elections until February 10th.
Renato Golin followed up on the MLIR organisation and charter thread to propose starting to form the high-level maintainer groups and then posted a thread on an MLIR Tensor Compiler Design Group.
MLIR News #73 is out.
Oskar Wirga is seeking feedback on a potential ability for Clang to collect coverage information of compiler-provided exploit mitigations.
Pavel Labath started an RFC discussing about addressing incompatibilities between LLDB and GDB in their handling of the ‘x’ packet.
Arseniy Zaostrovnykh posted an RFC on
-ftime-trace
for the static analyzer.Justin Stitt suggests adding wrapping and non-wrapping arithmetic types to Clang, providing finer grained control than options such as
-fwrapv
operating across a whole translation unit.Ted Woodward discussed adding RISC-V CSRs to LLDB core dumps and enabling disassembly of Qualcomm’s Xqci RISC-V extension.
There was further back and forth discussion on the commit access criteria RFC.
LLVM commits
The new KernelInfo pass reports various statistics intended to advise users attempting to compile code for GPUs of common bad code patterns. 18f8106.
Building compiler-rt and libc by specifying them within
LLVM_ENABLE_PROJECTS
is now deprecated.LLVM_ENABLE_RUNTIMES
should be used instead. b593110.A scheduler model was added for the SiFive P550. ea9993a.
As part of the work to remove debug instructions, various methods were transitioned to use iterators rather than
Instruction*
. 81d18ad8, 34b1395, 285009f, 65f81df.The
RuntimeUnrollMultiExit
knob can be used by targets to control whether to allow multi-exit unrolling. ad9da92.GlobalISel disabled bf16 TableGen patterns for the time being due to issues with them matching for fp16 and vice versa. 5a81a55.
The
Xmipscmove
andXmipslsp
vendor extensions were implemented for RISC-V. 0cb7636.LLVM intrinsics were switched to use
StringTable
. f4de28a.ReachingDefAnalysis was extended to stack objects. 3c3c850.
The
nocapture
attribute was replaced withcaptures(none)
. 29441e4.A new VectorizerEnd extension point was added after vectorizer passes in the PassBuilder. d3161de.
New GitHub Actions automation was added to aid users requesting commit access. f8ef269.
Clang commits
-fwrapv
now only controls the well-definedness of signed integer overflow (i.e. no longer impacts pointer overflow). The new-fwrapv-pointer
flag can be used to make pointer overflow well-defined. This matches GCC’s flags and behaviour. 1295aa2.__nullptr
was added as a keyword to C. 7fd5833.A new
PenaltyBreakBeforeMemberAccess
style option was added to clang-format. d50ebd4.diagnose_if
was extended to accept more detailed warning information. 0865ecc.The new
-fextend-variable-liveness
flag can be used to improve debugging of optimised code by causing Clang to try to preserve the liveness of source variables through optimisations, so they are more likely to be visible in debuggers. 71ab44a, 4424c44.TypeSanitizer now has documentation. 822954b.
Documentation was added for HIPSTDPAR. 964565c.
Implicit promotions of integer types was disabled for vector math builtins. 1ac3665.
Skeleton framework code was added for ClangIR to LLVM IR lowering. 38ddcb7.
Clang no longer emits pointer-tbaa for void pointers. Detailed reasoning is given in the commit message and associated documentation update. 77d3f8a.
Other project commits
Flang now supports the
UNROLL
directive to control how many times a loop should be unrolled. e811cb0.libcxx dropped support for Clang 17. 7f845cb.
LLDB expression evaluation with AArch64 Guarded Control Stacks enabled now works. b31e974, 6d0dd3d.
The MLIR MPI dialect was extended with additional types and ops. 48f8865.