LLVM Weekly - #630, January 26th 2026
Welcome to the six hundred and thirtieth 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
Voting should open very soon for the 2026 LLVM Community Area Team Elections, running through to February 9th. Keep an eye on the LLVM announcements category on Discourse.
Registration is now open for EuroLLVM 2026. Register by 1st March for the early bird rate. The conference will take place on April 14th-15th in Dublin, with pre-conference events on April 13th.
For those of you at FOSDEM, be sure to check out the LLVM dev room on Saturday. It looks like a really interesting program that I’m looking forward to catching up on once videos are posted.
Fangrui Song wrote about long branches in compilers, assemblers, and linkers.
My Igalia colleague Luke Lau has posted a 2nd part to his exploration of RISC-V LLVM performance improvements, this time walking through improvements to loop vectoriser cost modelling that lead to a 7% gain in a particular SPEC benchmark.
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: formal specification, ClangIR, pointer authentication, OpenMP, Flang, SPIR-V, RISC-V, embedded toolchains, HLSL, LLVM libc math.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
Nuno Lopes, Juneyoung Lee, Pedro Lobo, and George Mitenkov posted an RFC on adding a new byte type to LLVM IR to represent raw memory data in registers and enable the eventual removal of undef from LLVM IR.
Abhilash Majumder started an RFC discussion on allowing LLVM’s control flow graph infrastructure to work with PTX. Nikita Popov suggested that framing this as “CFG for MC” and making it not PTX specific may be a path forwards.
Matthias Springer seeded a discussion on how to deal with abandoned or unmaintained code in MLIR, using the
linalg-detensorizepass as an example.Ramkumar Ramachandra is seeking feedback on a proposal to improve
computeKnownBitsby moving to computation using a semilattice.Louis Dionne proposes removing the deprecated Makefiles from llvm-test-suite. Everyone who has responded is in favour.
Adel'gid Aragami suggested a new
-Wfor-loop-empty-initwarning that will warn when a for loop as an empty initialisation expression. Respondents have suggested that it may make more sense as aclang-tidycheck as opposed to a compiler warning.Sam Elliott started a discussion on disabling clang-format for TableGen within the LLVM tree given that most TableGen in tree appears not to use it. This was agreed, and issues filed for improving clang-format’s output with TableGen.
LLVM commits
Variadic functions can now be lowered by the SPIR-V backend. efb5794.
The newly added
.prefaligndirective can be used in assembly to specify the preferred alignment of the current section. 6490250.Some initial patches for RVY (RISC-V CHERI) MC layer support started to land. 5eb3969.
llvm.convert.to.fp16 and llvm.convert.from.fp16 intrinsics were removed. fpext/fptrunc with bitcast should be used instead. 0d4a35d.
Non-constant offsets are now allowed in llvm.vector.splice.{left,right}. cee36b2.
llvm-dwarfdump started to gain support for per-variable coverage metrics. df063cb.
An llvm.structured.gep intrinsic was added as an alternative to ptrdiff/GEP when pointer arithmetic is invalid and only structured access is possible. 9247e89.
nofpclass metadata was introduced to LLVM IR for load instructions, asserting which floating-point value classes will not be loaded. 6934ed5.
It’s been a big week for LLVM IR changes. In addition to all the other additions mentioned above, the specification for float min/max operations has been clarified/changed after a very lengthy RFC discussion. 6bae2a9.
llvm-objdump now supports
--symbolize-operandsfor RISC-V. 5b4a5cf.
Clang commits
A new
performance-string-view-conversionsclang-tidy check was added which looks for redundant conversions in call expressions expecting astd::string_view. Additionally, the newmodernize-use-string-viewwill flag functions that could be changed tostd::string_view. 771517e.__builtin_stdc_rotate_{left,right}were added as type-generic rotate builtins that accept any unsigned integer. 370529c.For AArch64, runtime detection of CPU features can now override those implied by CPU defaults (e.g. if LLVM’s CPU enables “aes” but it’s not detected at runtime). 9458d2a.
The
experimental-prefix was removed from the lifetime safety flags and diagnostics. 084916a.Documentation was added for running clang-tidy on CUDA files. ff65313.
Other project commits
A weak AVL tree implementation was added to LLVM’s libc and used to implement
tsearch. db71332.DFSan now supports SystemZ. fb95328.
ranges::shift_leftwas implemented in libcxx. 9311996.The OffloadTargetVerifier pass was added to MLIR, which will check live-in values and symbol references within offload regions. 8dfec25.
Dynamic traits are now supported in MLIR’s
DynamicDialect, laying the groundwork for supporting traits such as ‘IsTerminator’ in IRDL and Python bindings. 2b9ad86.