LLVM Weekly - #380, April 12th 2021
Welcome to the three hundred and eightieth 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 https://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 Mozilla Hacks blog featured a detailed post about using ThreadSanitizer to eliminate data races in Firefox.
Although the majority of talks at the first Community.o summit weren’t recorded, those that were are now available on the LLVM Foundation’s YouTube channel.
‘duk’ on the Secret Club blog looked in details at differing codegen for floating point clamp between Clang and Rust. Ultimately a bug report was filed and the codegen issue was fixed.
Version 1.0 of HPVM (the Heterogeneous Parallel Virtual Machine) has been released. HPVM is a retargetable compiler infrastructure that targets CPUs, GPUs, FPGAs and accelerators. It uses a target-independent compiler IR that extends the LLVM 9.0.0 compiler IR with an explicit, hierarchical data flow representation that captures task, data, and pipelined parallelism.
On the mailing lists
Melanie Blower posted a pair of RFCs for LLVM and for clang, to provide finer grained (expression level) control for floating point optimisation. Note that the linked Phabricator review threads provide a detailed summary and rationale.
Anastasia Stulova posted an RFC on testing all OpenCL builtin function declarations in Clang. The proposal lists the various options under consideration and their trade-offs.
Philip Reames initiated a discussion around an ambiguity of the nofree function attribute, proposing two options: 1) nofree implies no call to free, or 2) nofree applies to memory visible to the caller.
Andrzej Warzynski asks what clang should do when passed options that are reserved for Fortran inputs, noting that GCC tends to issue a warning rather than an error in such cases.
LLVM 12.0.0-rc5 has been tagged.
Serguei Katkov posted a heads-up about planned changes to the statistics reported by the greedy register allocator to the optimisation remark emitter.
LLVM commits
The PreserveCFG checker had been redesigned. 39e3e3a.
LLVM community norms around reverts are now documented. 0918f44.
GlobalISel for AArch64 learned to swap compare operands when it may be profitable. 49c3565.
The Ocaml bindings saw several cleanups and fixes. 5c25ff8, 58bb922, e5b7fed, 2c82ea1, d9bbd98.
Amongst other RISC-V vector changes, support was added for bitcasts between scalars and fixed-length vectors. af3a839.
Clang commits
Initial support was added for the OpenMP 5.1 nocontext and filter clauses, and the masked directive 7078ef4, 1a43fd2.
Additional RISC-V vector intrinsics were added. 66c0560, 0a18ea0, f720c22, fe252b5, f2a3601.
C-style explicit type conversions are now supported for matrix types. 71ab6c9.
Other project commits
The flang driver gained support for the
-cpp
and-nocpp
flags to control enabling/disabling predefined and command-line preprocessor macros. b83a445.The remaining C++ callable concepts were added to libcxx. c7ad020.
LLDB gained initial support for watching for fork/vfork, laying the foundations for user-visible work on supporting fork. a345419.