LLVM Weekly - #434, April 25th 2022
Welcome to the four hundred and thirty-fourth 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.
I’ll be talking at the first Cambridge RISC-V meetup this Thursday on “A whirlwind tour of RISC-V LLVM and the open source RISC-V software ecosystem”. Hope to see some of you there!
News and articles from around the web
HPVM v2.0 has been released. HPVM is a retargetable compiler infrastructure for heterogeneous parallel systems that targets CPUs, GPUs, and FPGAs, It uses a target-independent compiler IR that extends the LLVM compiler IR with an explicit, hierarchical dataflow graph representation that captures task, data and (streaming) pipelined parallelism.
Tom Tromey blogged about dramatically speeding up GDB’s DWARF reader.
On the forums
Stephen Neuendorfer proposed graduating CIRCT to the LLVM monorepo. This generated lots of discussion, mostly focusing on two issues 1) the fact CIRCT currently uses different development tools/practices (GitHub PRs rather than phabricator) and 2) general concerns about the LLVM monorepo becoming to large, and questions about whether continually adding new projects to that repo is the right path forwards. The first issue is resolved by the fact CIRCT developers are willing to move to Phabricator, while the second remains an open topic.
Tobias Hieta kicked off an RFC thread on warning when building using bfd or selecting gold or LLD as the default. As Tobia points out, it’s very common for people building LLVM for the first time to run into out-of-memory conditions due issues in the scalability of the GNU BFD linker. One outcome of the discussion was that switching to a Release build by default may avoid the issue for most people and this was forked to a new thread.
Tanya Lattner sent out a note that there is room for 2 more lightning talks at EuroLLVM.
Maksim Panchenko posted a list of open projects for BOLT.
Vassil Vassilev shared details of a bi-weekly C++ modules implementors meeting.
Min-Yih Hsu posted an RFC on translating complex LLVM IR constants to the LLVM MLIR dialect.
Mehdi Amini is requesting that if you’re using MLIR in your project to submit a PR to link to the project website/repo in the the list of MLIR users.
River Riddle posted a PSA that special case parsing of ‘func’ operations in MLIR is being removed.
“Zoxc” posted a memory model for LLVM IR supporting limited type punning. The model aims to support limited type punning between pointers and integers and to allow memcpy to be represented in LLVM without introducing a byte type.
Zahira Ammarguellat proposed breaking the link between
-ffast-math
and-ffp-contract
.
LLVM commits
Initial pieces of the SPIRV backend have been committed. 7fd4622, 40114dd, 6c69427, ec25903, eab7d36, 153dee3.
The developer policy was updated to document expectations around updating release notes. 009048a.
LLVM’s Support library gained an optimisation for
(.*)
regex matches. This drops the FileCheck time on clang/test/CodeGen/RISCV/rvv-intrinsics/vloxseg_mask.c from 7.3 to 2.7 seconds. 653de14.The CallPrinter passes have been ported to the new pass manager. a7e20a8.
getOrInsertLibFunc was introduced, with the goal of ultimately improving the handling of argument extension for ABIs that require it when inserting libcalls. 0f8c626.
llvm::processSuffleMasks was introduced and used in the DAG type legalizer. 2cca53c.
MC layer support for floating point instructions were added to LoongArch. 3a49ad7.
A scheduling model was added for the IBM z16. 9778ec0.
The RISC-V SEXT.W removal pass was improved by adding the ability to convert instructions to a ‘W’ variant in order to remove a SEXT.W. 5dd99f7.
Clang commits
std::move
,std::forward
, and a number of other simple functions are now treated as builtins, resulting in improved codegen at-O0
. 72315d0.The new OpenMP offloading driver is now the default. ae23be8, 15e62062.
-Wmisexpect
was added, which will warn when branch weights collected during profiling conflict with those indicated by the programmer (e.g. through__builtin_expect
. bac6cd5.Functions with empty parameter lists (“K&R” C functions) are now disallowed in C2x, and a
-fno-knr-functions
flag was added to opt-in to this behaviour in other C language versions. 9955f14.