LLVM Weekly - #496, July 3rd 2023
Welcome to the four hundred and ninety-sixth 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 to asb@asbradbury.org, or @llvmweekly or @asbradbury on Twitter, or @llvmweekly@fosstodon.org or @asb@fosstodon.org.
News and articles from around the web and events
The call for papers is open for the ninth annual LLVM in HPC Workshop, with submissions due on August 16th.
My Igalia colleague Job Noorman has written up a great blog post about his work to enable RISC-V support in the BOLT post-link optimiser. It gives the initial technical details (more to follow) and I think gives a good example of how investment from both the contributor and the upstream reviewers can lead to a better solution that benefits everyone - in this case, migrating BOLT to a newer runtime linking framework and avoiding the need for us to support two RISC-V runtime linkers in parallel within LLVM.
Andrew Kelley (Zig programming language creator and lead) recently shared a roadmap for moving away from the Clang, LLVM, and LLD libraries. He later provided clarifications, and the issue was discussed on sites such as HN and lobste.rs.
According to the LLVM calendar in the coming week there will be:
- Office hours with the following hosts: Tobias Grosser, Anastasia Stulova, Quentin Colombet, Johannes Doerfert.
- Online sync-ups on the following topics: OpenMP, Clang C/C++ language working group, Flang, RISC-V, MLIR open meeting, HLSL, SPIR-V, MLGO.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
Andrew Kaster posted an RFC on adding support for SerenityOS to LLVM.
Piotr Zegar shared a list of clang-tidy patches where review assistance would be appreciated.
In response to a question, Kiran Chandramohan summarised the status of optimisation in Flang.
Aart Bik provide an update on MLIR sparse compiler progress.
Andrzej Warzynski shared a PSA update on scalable vectors in MLIR.
Antoine Moynault started a discussion thread about loop invariant code motion and code size, which contains some measurements later on in the thread.
Fangrui Song posted an RFC on adding support to LLD to compress arbitrary sections (much as it currently supports
--compress-debug-sections
). Peter Smith shared experiences from a similar feature in another toolchain.David Blaikie started a discussion on reducing the overhead of
__compressed_pair
. Respondents seem to be in favour of using[[no_unique_address]]
and Reid Kleckner summarises the platform support story for this.Sameer Sahasrabuddhe advertised that additional patches implementing the convergence control intrinsics RFC are now up for review.
LLVM commits
Shrink wrapping no longer conservatively assumes that a load/store accesses the stack. 02ba5b8.
It’s now possible to set
LLVM_EXPERIMENTAL_TARGETS_TO_BUILD=all
to build all available experimental targets. 1908820.The
llvm.frexp
intrinsic was introduced. 003b58f.BFloat16 support was added to the NVPTX backend. 250f2bb.
Support was added for fat LTO objects, which contain both generated object code and LTO compatible IR. 75a1797.
The MetaRenamer pass gained an option to change only the instruction namses (keeping basic block and function names intact). 6f9e743.
The
ParseStatus
enum was introduced alongside a three-stateparseDirective
as a replacement forParseDirective
in target ASM parsers. af20c1c1.A scheduling model was added for the Neoverse N1. 6a5da11.
Clang commits
All trailing whitespace was removed in the clang/ subdirectory. f6d557e.
WebAssembly shared libraries are now supported on non-Emscripten targets (e.g. wasm32-wasi). 55e199a.
C++11 style initialisation of Arm SVE types is now supported. 989879f.
The
modernize-printf-to-std-print
clang-tidy check was added, which can convert printf-style format strings to std::print-style format strings. 83f875d.
Other project commits
Initial support was added for building the Flang runtime as a CUDA or OpenMP target offload library. 3212051.
The libc++ legacy debug mode was removed (as proposed in a previous RFC). b5270ba.
Work started to move to a new surface syntax for Sparse Tensor Encoding Attributes in MLIR. 6b88c85.