LLVM Weekly - #412, November 22nd 2021
Welcome to the four hundred and twelfth 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 [email protected], or @llvmweekly or @asbradbury on Twitter.
News and articles from around the web
On the LLVM blog, Kristof Beyls provided an update on the LLVM relicensing effort along with a call for help for closing off the “long tail” of contributions that haven’t yet been explicitly relicensed. Over 94% of all contributed lines of code have been made available under the new license (Apache-2.0 with LLVM exception).
The 2021 LLVM Developers Meeting took place online last week. Videos will be posted in the next few weeks.
On the mailing lists
Anton Korebeynikov shared a major update on the LLVM bugzilla migration. Assuming the proposed migration roadmap goes to plan, the LLVM GitHub repo should be open for new issues and have ingested all previous BugZilla issues on Monday November 29th.
Yitzhak Mandelbaum shared an update on the proposed dataflow analysis framework for the Clang AST, linking to the first two patches.
Gábor Horváth provided notes from the Clang Static Analyzer round table discussion.
Momchil Velikov kicked off an RFC discussion on introducing an LLVM IR attribute for asynchronous unwind tables, noting that while there’s a ‘uwtable’ attribute, there’s no attribute to indicate if the unwind tables should be asynchronous or not.
Jeroen Dobbelaere posted an RFC on introducing an ‘unknown_provenance’ LLVM IR constant, intended to be used as part of the ptr_provenance infrastructure used to implement full restrict support.
Joshua Cranmer posted a new proposal for introducing complex types into LLVM. Rather than introducing complex types directly, it proposes representing complex numbers as vectors and using intrinsics. This was shared ahead of an LLVM Dev Meeting roundtable discussion on the topic.
Serge Guelton suggests improving LLVM’s handling of string IR attributes. Noting that freeform key=value attribuees are commonly used for relatively standard cases like “target-cpu” or “target-features”, Serge proposes introducing private symbols to represent such common keys.
Ying Yi provided an update on the “Program Repository” project.
LLVM commits
A constant value consecutive store-merging optimisation pass was added to GlobalISel and enabled for AArch64. dc84770.
The RISCVCompressEmitter tablegen backend was modified and renamed to CompressInstEmitter, so it can be reused for compressed instruction emission for the CSKY target. 24d1673.
The PPC backend gained a peephole optimisation for conditional trap instructions. ae27ca9.
Clang commits
A tutorial was added on how to write a source-to-source translation tool using Clang Transformer. 2b49484.
The
-masm=intel
flag now affects the inline asm style. ae98182.
Other project commits
LLVM’s DenseMap was imported into and modified for use in compiler-rt sanitizers. 54adc16, c26dbc4a.
libcxx’s coroutine implementation was moved out of the std::experimental namespace. 2e6ae1d.
libcxx’s std::sort now uses introsort to avoid O(n2) behaviour on adversarial inputs. 7f28739.
libunwind gained an interface for dynamic .eh_frame registration. bab3981.
Documentation for MLIR’s shape dialect was expanded. 0d0c46a.