LLVM Weekly - #580, February 10th 2025

LLVM Weekly - #580, February 10th 2025

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

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

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 a BinPackLongBracedList 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.