LLVM Weekly - #414, December 6th 2021
Welcome to the four hundred and fourteenth 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
The next Women in Compilers and Tools meetup will take place on December 9th. It will feature Sangeeta Chowdhary’s talk, Fast and Precise Approaches to Detect, Debug, and Repair Numerical Errors.
On the mailing lists
It’s been a busy week in the ongoing Bugzilla to GitHub issues migration attempt. A GitHub outage last weekend delayed the import. Further issues were found on Wednesday and on Friday it was stopped again due to an issue rewriting issue references. Anton Korobeynikov proposed abandoning the migration and unlocking Bugzilla again if a solution isn’t found by the end of this week. Many have chimed in with additional questions or suggestions for next steps. Apologies I can’t summarise it all - the discussion at times is a little charged, which takes extra care to summarise fairly. Regardless of whether this migration attempt needs to be aborted or not, huge thanks are owed to Anton Korobeynikov and everyone else involved for the ongoing time investment to try to move this forward.
Philip Reames documented the design choice that hoisting instructions out of loops is treated as the canonical form, and detailing what might be needed to move towards an alternate design around a profit-driven loop invariant code motion.
Erich Keane bumped the RFC on raising the minimum Visual Studio version to VS2019, suggesting to also update the GCC, Clang, and Apple Clang requirements at the same time.
LLVM 13.0.1-rc1 has been tagged.
LLVM GPU News #24 is out, providing the usual mix of updates on GPU-related activities under the LLVM umbrella.
Michał Górny kicked off a discussion about adding support for FreeBSD kernel coredumps, outlining three potential approaches and requesting feedback.
Alan Phipps updated his RFC on source-based MC/DC coverage to reflect design changes following discussion with others in the community.
LLVM commits
Loop invariant code motion learned to hoist loads in the case where there is also a store that can’t be moved. 2cdc6f2.
VE is now an official target. 6f25e75.
Support was added for the Armv8.1-M PACBTI extension. 5cff77c, c12c7a8, b430782, f5f28d5.
A small HTTP client library was added to llvm/Support, including an implementation that wraps libcurl. 170783f, e0b259f2.
llvm-profgen can now compute and show a measure of ‘profile density’, intended to indicate when there may be too few samples relative to the program size. c2e08ab.
Support for D demangling was expanded, with support for demangling simple single qualified names. e63c799.
The LLVM_DEFAULT_TARGET_TRIPLE CMake variable is now documented. ec15b73.
A flow-based profile inference algorithm, profi, was added to help overcome the inaccuracies in profile data collected for PGO. 7cc2493, 98dd2f9, 93a2c29, 4e24ca1c.
The function attribute inference path learned to infer the writeonly argument attribute. 740057d.
Clang commits
Some initial support code was added for building dataflow analyses. 6e2aecd7.
A new clang-tidy check was added for
string_view(nullptr)
. 6a9487d.Documentation for clang-tidy’s bugprone-unhandled-exception-at-new check was improved. 1cefe91.
Other project commits
The old MachO Darwin LLD linker was removed, as the new implementation is now a feature complete replacement. 9e35525.
PlatformQemuUser was added to LLDB. This provides initial support for debugging executables under qemu-user. 1408684.
Environment variables for LLVM’s OpenMP library were documented. 618f8dc.
The Dexter debug experience testing tool gained a new DexDeclareAddress command, used to test the relative values of pointer variables. 0428d44.
Flang’s FIR gained a dataflow optimisation pass. 2e7202b.
Formatting benchmarks were added to libc++. 01631ff.
libc++ no longer uses the C++03 emulation for std::nullptr_t by default. This is an ABI break, but only for users compiling in C++03 mode that have std::nullptr_t as part of their ABI. a34f246.