LLVM Weekly - #580, February 10th 2025
Welcome to the five hundred and eightieth 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
As a reminder, today is the last full day to vote in the LLVM Area Team Elections.
GNU Binutils 2.44 was released, notably deprecated the gold linker.
Andres Salamanca blogged about LLVM’s SimplifyCFG pass.
Antonin Décimo writes on the Tarides blog about using clang-cl with OCaml 5.
The next LLVM Bay Area meetup will take place on 24th February.
The next Cambridge (UK) compiler social will take place this Wednesday 12th February. Be sure to register if you would like ot attend. Many thanks to the organisers - hopefully I’ll see some of you there!
The next Portland LLVM social will take place on February 13th. There’s a poll for choosing the exact location.
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: alias analysis, pointer authentication, OpenMP, Flang, BOLT, RISC-V, LLVM libc.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
Ilya Biryukov proposed an LLVM working group on memory safety.
Ideas for Google Summer of Code projects have started to be posted. See the GSoC 2025 tag on Discourse for project ideas such a Bfloat16 in LLVM libc, improving Clang documentation parsing, and rust-enzyme improvements.
Nikita Popov proposed an ABI lowering library for LLVM which can be used by frontends to produce LLVM IR for a specific target with appropriate call ABI lowering.
Rahul Joshi is checking there are no downstream users for TargetIntrinsicInfo and shared a PSA on API breaking changes for named operands in MachineIR.
LLVM Foundation board minutes from December and from January have now been posted.
River Riddle explains the purpose of a dialect attribute in MLIR.
“bubblepipe” kicked off a discussion about the tuple type in MLIR.
Joshua Cranmer posted a new fast-math flags RFC, this time focusing on the semantics of
contract
.Stella Laurenzo is taking a break from the MLIR project and shared some thoughts and advice for future facilitation of the project. Thank you Stella for all of your contributions!
Samuel Tebbs started an RFC discussing on modeling register pressure on a per-VPlan basis in the LoopVectorizer.
Timm Bäder is looking for help with the bytecode interpreter in Clang and has a series of starting points for how you can do so.
LLVM commits
Xtensa windowed registers are now supported. f6578c3.
A CMake flag can now be used to avoid building LLVM’s telemetry framework (note that the telemetry code is inert by default anyway). bac62ee.
MachineCopyPropagation, PostRAScheduler, RenameIndependentSubregs, and a handful of other passes were ported to the new pass manager. 4313345, 44f638f, f77f777.
Vector predicated loads/stores are now supported in the InterleavedAccessPass. 005b23b.
The guidance on testing buildbot configurations locally was enhanced with advice on working around compatibility issues with Python 3.13 and dealing with builder workflows that rely on scripts from llvm-zorg (where you may want to test not-yet-upstreamed modifications). 96d46c6.
llvm.vector.(de)interleave{3,5,7} intrinsics were introduced. 5a1e16f.
A series of patches related to the loop interchange RFC have landed in recent weeks, with the goal of addressing the compile-time increase caused by enabling loop interchange. d15f3e8, 5d281a4, 1eaa179.
Clang commits
An initial ClangIR to LLVM IR lowering pass was added. It is a very minimal starting point, supporting lowering global integer and floating point variables only. 622ee03, 2b5cc89.
The new
-Wunique-object-duplication
warning will warn about objects which should only exist once per program but which may get duplicated when built into a shared library. dfc2873.Initial support for the OpenACC ‘atomic’ construct was added. 99a9133.
Clang builtins were switched to using string tables. cd269fe, 1cb979f, 64ea3f5.
-ftime-trace
can now break down analysis time of the static analyzer. c1d5be8.A
BreakBeforeTemplateCloser
and aBinPackLongBracedList
option was added for clang-format. d2b45ce, e0a21e2.-fprofile-continuous
enables a profiling mode where profile counter updates are continuously synced to a file. 8e61aae.
Other project commits
MLIR’s ViewOpGraph GraphViz output was made much prettier (screenshot). 1f67070.
libFortranRuntime.a was renamed to libflang_rt.runtime.a. 5c8c2b3.
An alternative algorithm for printf binary to decimal floating point conversion was added to LLVM’s libc. It is intended to be used in environments that can’t afford the space cost of the table lookup required by the default Ryū algorithm. b53da77.
libc++ gained new benchmarks for associative containers. 1d319df.
The LLD ELF linker gained new options for optimising section layout (for instance, based on profile data). 6ab034b.
LLDB’s documentation on remote testing was updated. 5d738b2.
A lexer was committed to LLDB for the “Data Inspection Language” (DIL), intended to be used for variable inspection (see the RFC). d9a7498.
MLIR’s LLVM dialect now supports global aliases. 4fb96f2.