LLVM Weekly - #448, August 1st 2022
Welcome to the four hundred and forty-eighth 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.
News and articles from around the web
The high level agenda for 2022 US LLVM Dev Meeting has been announced.
On the forums
LLVM 15.x has branched and 15.0.0-rc1 has been tagged.
Now that LLVM 15 has branched, Tobias Hieta provided an update on the proposal to allow C++17 features in the LLVM codebase. The patch to raise the minimum toolchain requirements is under review.
There was lots and lots of additional discussion on the move to GitHub PR-based reviews. More than I can reasonably summarise I’m afraid.
There was also further discussion about coordinating LLVM commits across different projects. It raised several issues with testing, validation and how to share "stable green windows" across LLVM components for related projects.
David Finkelstein summarised recent progress on LLVM’s libc.
Tanya Lattner is seeking speakers for the Community.o workshop in November.
Daniel Thornburgh shared an RFC on adding support for a credential helper to debuginfod. This would be used when access to debug information needs to be restricted.
Vassil Vassilev posted an RFC on flexible lexer buffering for handling incomplete input in interactive C/C++.
LLVM commits
The trunk major version is now 16. 809855b.
Scalable vectorisation was enabled by default on RISC-V with the V extension. 15c645f.
The LangRef and GetElementPtr docs were updated to use opaque pointers for examples. 7ac7ec8, b66ca91.
It’s now possible to implement a target-specific policy for disassembler “resyncing” when encountering an instruction that can’t be decoded. 55f1fbf.
Arm and AArch64 objdump now uses a prettyprinter to print an instruction encoding as a 32-bit word, rather than bytewise little-endian. 2b38f58.
New automation was introduced to automatically assign reviewers for backport requests. f673dcc.
The Arm backend now supports an
+atomic-32
target feature, which forces LLVM to assume lock-free 32-bit atomics are available even if they usually wouldn’t be. b1b1086.If possible, instructions that are between two adjacent loops will be sunk or hoisted in order to faciliate fusion of the loops. dd3ca65.
A target hook was added to allow data prefetches into non-default address spaces. 0562cf4.
Clang commits
The soversion for libclang will now change for each new LLVM major release (as it did for LLVM 13 and below). bc39d7bd.
RISC-V Vector intrinsics are now lazily generated rather than placed in a huge header file, leading to large speedups. 7a5cb15.
A library interface was added for ClangOffloadBunder. 0f3f357.
clang-format learned more about handling Verilog inputs. f93182a, 67480b3, 6db0c18, b67ee18, c887194, 60e1206.
The
maybe_undef
attribute was introduced. a35c64c.A new misc-const-correctness clang-tidy check was added, which will add
const
to unmodified variables. 46ae26e.
Other project commits
Implementations of opendir, readdir, closedir, and dirfd were added to LLVM’s libc. 35ea84a.
P1004R2 (constexpr std::vector) was implemented in libcxx. 98d3d5b.
The API of GEPOp in MLIR’s LLVM dialect was reworked. 37da2a1.
A new utility was added to MLIR to sort the operands of commutative operations. This is intended to be used to simplify their matching. b508c56.