LLVM Weekly - #546, June 17th 2024
Welcome to the five hundred and forty-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, @llvmweekly or @asbradbury on Twitter, or @llvmweekly@fosstodon.org or @asb@fosstodon.org.
News and articles from around the web and events
The next Cambridge compiler social will take place on June 19th and will fature a talk “Hyperblock Scheduling for Verified High-Level Synthesis” by Yann Herklotz.
The forms to volunteer for the LLVM US Dev meeting program committee, travel grant committee, or to propose a co-located workshop will close on June 21st.
According to the LLVM calendar in the coming week there will be the following:
- Office hours with the following hosts: Phoebe Wang, Johannes Doerfert, Aaron Ballman.
- Online sync-ups on the following topics: pointer authentication, SPIR-V, vectorizer, security group, new contributors, OpenMP, Flang, floating point, RISC-V, MLIR, embedded toolchains.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
Stephen Tozer provided a PSA on LLVM IR output changing from debug intrinsics to debug records.
Apologies for missing this before, but Aaron Ballman provided an excellent summary of his perception of the consensus in the long-running -Ofast deprecation RFC thread.
Galina Kistanova reported that the upgrade to buildbot v3.9 was successfully completed.
Aaron Ballman kicked off an RFC thread on requiring that discussion of new Clang extensions to explicitly consider impact to monorepo stakeholders, using the example of
__restrict
on member functions impacting libcxx’sstd::function
.Hongjia Cao has attempted to reignite discussion on non-8-bit byte support in LLVM.
Sander de Smalen proposes avoiding inlining alwaysinline functions when they cannot leagally be inlined.
Alexis Engelke started an RFC discussion on the use of string view literals in the LLVM code base, noting that when
Twine
is used with string literalstrlen
may still be called.Andrew Wock proposes support for thread-local profile counters, providing benchmarks for the various options.
Younan Zhang suggests adding a new GitHub issue label for fuzzer-generated issues.
Tom Stellard reports that LLVM now meets all criteria to pass OpenSSF’s baseline best practices.
Alexander Shaposhnikov would like to revive the numerical sanitiser.
“YunFly” proposed a new pass for fusion in MLIR.
Andreas Jonson would like to allow noundef metadata only on loads (enforcing this with the verifier).
“Menooker” proposes adding an easy builder interface for constructing MLIR IR from C++.
Balazs Benics posted static analyzer RFCs on taming Z3 query times and making
isTainted()
and complex symbols friends.
LLVM commits
LLVM has switched to using debug records internally by default, the migration doc on the removal of debug intrinsics was updated, and IR is printed with debug records by default. dc726c3, e19199b, 0945727.
DynamicAPInt was introduced (moved from mlir’s MPInt), providing an arbitrary precision integer library that unlike APInt doesn’t require a fixed maximum size. 76030dc.
APFloat support for FP6 and FP4 data types was added. b1fe03f, 880d370.
BranchWeightMetadata was extended to track the provenance of weights. 294f3ce.
All LLVM docs were updated to use debug records rather than debug intrinsics. 400d4fd.
Modulo variable expansion was implemented, with support initially present for AArch64. 0c5319e.
Support was added for the RISC-V indirect CSR access extensions. 2fe7238.
Basic definitions were added for the Cortex-A725 and Cortex-X925. e80c595.
The move from Chromium’s security tracker to GitHub for security issue reporting was documented. a6c1152.
A window scheduling algorithm for the machinepipeliner was implemented. b6bf402.
llvm-profgen gained support for Linux kernel perf files. 2fa6eaf.
Clang commits
The emitted IR for array initialisation was simplified. 12d24e0.
sizeof(pointer)
handling in bugprone-sizeof-expression was improved. 546c816.
Other project commits
As part of work on a freelist allocator, a
Block
class abstraction and freelist class was added to LLVM’s libc. 85c78d4, 1737814, 3bcd80a.pthread_rwlock
andfdopen
were implemented in LLVM’s libc. 41fecca, 0b24b47.LLD’s build-id now defaults to a 20-byte SHA1 digest. 1d96e4b.
Basic TLSDESC support for LoongArch was implemented in LLD. c4a1440.
MLIR’s arith dialect integer range optimisations pass was improved. 4722911.
MLIR no longer merges blocks during canonicalisation by default. a506279.