LLVM Weekly - #490, May 22nd 2023
Welcome to the four hundred and ninetieth 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
SourceGraph announced scip-clang, a new SCIP indexer for C and C++. “SCIP is a language-agnostic protocol for indexing source code, which can be used to power code navigation functionality such as Go to definition, Find references, and Find implementations.”
According to the LLVM calendar in the coming week there will be:
- Office hours with the following hosts: Kristof Beyls, Johannes Doerfert.
- Online sync-ups on the following topics: MLIR C/C++ frontend, pointer authentication, OpenMP, Flang, RISC-V, MLIR open meeting, LLVM embedded toolchains, SPIR-V.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
There were a number of really helpful summaries from EuroLLVM round tables posted - thanks to everyone involved in taking notes and sharing these. See Kristof Beyls' office hours summary, J Ryan Stinnett’s debug info summary, Peter Smith’s LLVM embedded toolchain’s summary and Andrzej Warzynski’s targeting CPUs from ML frameworks summary.
Following EuroLLVM, there was a lot of additional discussion about pre-commit testing using buildbot.
Aaron Ballman proposed deprecating and removing clang-rename, noting that its functionality has largely been superseded by clangd.
Alex Zinenko shared a PSA that all structured linalg transform ops in MLIR now require types.
There was some discussion about the merits of exposing more of the new pass manager to the C API.
Vlad Serebrennikov made a proposal to add an opt-in way to make Clang’s VerifyDiagnosticConsumer less strict.
LLVM commits
Python files in the LLVM codebase were reformatted using black. b71edfa, f84bac3.
The long defunct LLVM Python bindings were removed from the tree. 2980029.
Due to correctness issues with
llvm::User
andllvm::MDNode
,-fno-lifetime-dse
is now passed to GCC when building LLVM. 47f5c54.The Python coding standard used by LLVM is now documented. 83768e6.
KnownBits gained intersectWith and unionWith helper methods. d8229e2.
JITLink gained support for RISC-V linker relaxation. 310473c.
CCState’s getNextStackOffset was renamed to getStackSize. 01a7967.
Multiple backends were updated to use backwards register scavenging for frame index elimination, which is preferred as it doesn’t rely on accurate kill flags. a8dd9f4, a291601, 13bd96e.
MC layer support for the experimental zfbfmin, zvfbfmin, and zvfbfwma extensions (BFloat16 related) was added to the RISC-V backend. 35ff5eb, b18a819, a1455de.
Patches to support a tuple of vectors in RISC-V vector segment load/store intrinsics started to land. c8eb535.
-fsanitize=function
now places two words before the function entry and is allowed for all targets. ad31a2d, 67cbe1b.
Clang commits
Fixits for
-Wunsafe-buffer-usage
are now hidden behind the new-fsafe-buffer-usage-suggestions
flag. b7bdf19.Documentation for the StdCLibraryFunctionArgs checker was improved. 4400ff5.
Unreferenced pages on Clang’s website were removed. 153d9b9.
Other project commits
A
std::extents
implementation was added to libcxx. fcaccf8.The incomplete support for 32-bit Arm in the lld-macho linker was removed. ed59b8a.
Optimised memset, bcmp, and memcmp implementations were added for RISC-V in LLVM’s libc. c5dede88, 7c1f279, 893f02c.
The buildgo.sh script for TSan can now cross-build the Go runtime. 11081a6.
The
irdl.any_of
operation was added to MLIR’s IRDL. 42987df.A task record and replay mechanism was implemented in LLVM’s openmp. 36d4e4c.