LLVM Weekly - #406, October 11th 2021
Welcome to the four hundred and 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.
News and articles from around the web
LLVM 13.0.0 has been released.
Juneyoung Lee has blogged about “the select
story” - the
story of how and why a transformation to fold select i1 %a, i1 %b, i1 false
to and i1 %a, %b
was removed.
MaskRay and Adrian Ratiu at Collabora have both blogged about building glibc with LLVM/Clang.
OpenASIP v1.24 has been released, adding support for LLVM 13.
On the mailing lists
Tom Stellard kicked off an RFC thread on behalf of the LLVM Foundation Board of Directors on moving from Phabricator to GitHub PRs. “The LLVM Foundation Board of Directors is seeking comment on the current state of Code Review within the LLVM Project and its sub-projects. Phabricator is no longer actively maintained and we would like to move away from a self-hosted solution, so our goal is to determine if GitHub Pull Requests are a good alternative to our current code review tool.” The email listed a series of questions that the Board are seeking feedback on. This generated a lot of discussion. I’ve attempted to pick out a few key sub-threads but apologise it’s not possible to summarise everything. A number of respondents including Renato Golin and Mehdi Amini queried the nature of the involvement of the LLVM Foundation’s BoD, whilst others such as David Blaikie spoke in favour of the BoD involvement. Tanya Lattner followed up to clarify and Chris Lattner gave some broader perspective Some respondents suggested other infrastructure issues should take higher priority, such as pre-submit testing or the bug tracker.
Florian Hahn posted an RFC on adding a new set of vector math builtins to Clang (a couple of weeks ago in fact - I missed it previously).
ORC JIT Weekly #41 is out, providing an update on the JITLinkMemoryManager refactor.
Mircea Trofin’s post about adding a dependency on abseil to google/benchmark generated substantial new discussion over the past week, including queries from Stella Laurenzo and Chris Lattner on the merits vs costs of adding the abseil dependency.
Petr Hosek announced that shared top-level CMake modules are being added in order to reduce duplication. One impact of this is it will no longer possible to build libc++, libc++abi, libunwind, or compiler-rt using CMake without also checking out the top-level CMake module directory (if you weren’t already using a full monorepo checkout).
Juneyoung Lee is seeking any final feedback on turning on clang’s noundef analysis by default.
Konrad Kleine announced nightly snapshot LLVM builds for Fedora Linux.
Michał Górny has been working on improving LLDB’s serial port support and started a thread to discuss this.
LLVM commits
A new ‘opt’ pipeline reducer script was checked in. This script uses the
-print-pipeline-passes
option to identify a reduced set of passes that still fail on the given input. 91d15aa.The maximum alignment representable in IR is now 4GB (up from 1GB). 0539246.
-mcpu=generic
for AArch64 now default to a schedule for an in-order core (the A55). The reasoning is that this will benefit in-order cores and cause little to no performance difference for out-of-order devices. adec922.Internal users of deprecated APInt constructors and methods were updated. a9bceb2.
SelectionDAG’s stack protector codegen optimisations have been ported to GlobalISel. cfef180.
Further documentation was added on LLVM’s pre-merge testing. e2f150c.
A new Constant::hasOneLiveUser helper was introduced and used in the inline cost model. 11c8efd.
TargetRegister.(h|cpp} was moved from Support to MC. 89b5706.
Clang commits
An option was added to clear AST memory before running LLVM passes. 6522b7c.
A new InvalidPtrChecker was added to the static analyzer. 811b173.
if consteval was implemented. 424733c.
New TypeLoc-related matchers were added. ac74296.
Other project commits
string, integer, char, and bool formatters were added for std::format in libcxx. d550930, 3e9689d, 49e736d, 7fb9f99.
Support was added to libcxx and libcxxabi for adding tests for vendor-specified properties. f6a7490.
The ‘arith’ MLIR dialect was split from the ‘std’ dialect. 8c08f21.
Polly gained a
-polly-loop-fusion-greedy
option which will try to fuse any loop regardless of profitability. 6448925.