LLVM Weekly - #579, February 3rd 2025

LLVM Weekly - #579, February 3rd 2025

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

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

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 and Xmipslsp 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 with captures(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.

KernelPass → KernelInfo pass. Thanks for including that.

1 Like