LLVM Weekly - #416, December 20th 2021
Welcome to the four hundred and sixteenth 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
Rui Ueyama has released version 1.0 of the mold linker. It aims to be a much faster drop-in replacement for linkers like LLD and GNU gold. On a related note, MaskRay blogged about why ld.lld isn't faster than it is.
On the mailing lists
Tom Stellard shared an update on the 13.0.1 release. Backport requests will be accepted until Monday December 20th, and rc2 will be tagged shortly after.
Nikita Popov raises the question of further specifying the interaction of sret parameters and unwinding, with the goal of enabling more optimisations.
Tom Stellard kicked off an RFC discussion on introducing a new automated release workflow using GitHub Issues and Pull Requests. Respondents asked about the impact in terms of email notifications.
Weining Lu shared an RFC on adding a new backend for the LoongArch ISA. The work done so far is public, and is being re-factored into small incremental patches as was done for the RISC-V, CSKY, and VE backends.
Chris Sears started a discussion on tidy-llvm.py, a tool to help run clang-tidy on LLVM itself. Some respondents suggested using a compilation database as a workaround.
James Nagurne is seeking guidance, examples, or docs related to “super passes”.
LLVM GPU News #25 is out.
LLVM commits
Prologue and epilogue generation was implemented for z/OS target. 3f1c403.
Details regarding MemorySSA’s precision were documented. ac994f8.
The location description DWARF extension, one of the DWARF Extensions for Heterogenous Debugging used by the AMDGPU target, was documented. c6be2ad.
Named opcodes are now supported in the .insn directive for RISC-V. 10a7198.
The llvm-debuginfod-find tool was added. It wraps the debuginfod library to query debuginfod servers for artefacts. f0ca8d2.
Instruction selection support was added for STRICT_{FADD,FSUB,FMUL,FDIV} on RISC-V. 3926893.
Deferred inlining was disabled, as with the new pass manager it has been observed to have instances of ‘catastrophic inlining’ (see the detailed commit message for more details). a8c2ba1.
The process for working with patch series on Phabricator was documented. 2dbe589.
The RegAllocEvicationAdvisorAnalysis pass was introduced. 0910380.
The constant index type for extractlement/insertelement is now canonicalised to i64. e6ad9ef.
Clang commits
The CLANG_DEFAULT_PIE_ON_LINUX CMake option was added to emulate GCC’s
--enable-default-pie
. 1042de9.Support was implemented for P2085, out-of-class defaulting of comparison operators. 5fbe21a.
Warnings can now be disabled for integer to floating-point narrowing conversions for cppcoreguidelines-narrowing-conversions. 9198d04.
Other project commits
The v3 ThreadSanitizer runtime was re-committed and enabled by default. b332134, 9fb8058.
Microsoft’s floating-point to_chars implementation was contributed to libcxx. It uses the Ryu and Ryu Printf algorithms. abb5dd6e.
A FreeBSDKernel plugin was added to LLDB that supports reading FreeBSD kernel core dumps. 9c7fbc3.
Patches implementing a new frontend pattern language for MLIR’s PDL have started to land. See River Riddle’s presentation at a recent MLIR open meeting for more information. 11d26bd, 322691a, d7e7fdf, and more.
A memory allocation rewrite pass was added to Flang, that can reclassify memory allocations from stack to heap when appropriate. 3d092e3.
LLVM’s libc gained a strtold implementation. aa1902f.
Documentation was added on how to add a math function to LLVM libc. a2b3e6b.
P0898R8 (monadic operations for std::optional) was implemented for libcxx. 17cfc57.
In the ELF LLD linker, scanRelocations was split into scanRelocations and postScanRelocations. Postponing some work to postScanRelocations gives more flexibility, as described in the commit message. cf783be.
LLDB gained the ability to cache symbol tables for subsequent debug sessions can start faster. da816ca.
Reproducer replay functionality was removed from LLDB. fa12606.
Scalable vector support was added to MLIR’s VectorType (meaning a number of operations can be removed from the ArmSVE MLIR dialect). a4830d1.