LLVM Weekly - #423, February 7th 2022
Welcome to the four hundred and twenty-third 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 call for papers for the LLVM Performance Workshop at CGO 2022 is now open. The deadline is March 1st, and the workshop will take place on April 3rd (both in person in Seoul and virtually).
On the forums
The LLVM 14.x release branch has been created. RC1 is expected on Feb 8th.
The migration to Discourse is now complete, and Tanya Lattner provided a summary of important things to know regarding the migration.
‘giannissc’ asked about the differences between the HIR and Calyx IRs for CIRCT, and received answers from the leads of both IRs.
Christian Kuehnel suggested setting up infrastructure working group (IWG) ‘office hours’.
Krzysztof Drewniak shared an MLIR RFC on adding passes to replace bfloat16 with i16.
Mattias Holm started a discussion on abstraction-raising passes in MLIR and received several pointers.
Alexander Batashev asked about the feasibility of generic dataflow optimisations in MLIR.
Christian Kuehnel shared a proposal for pre-merge testing on the main branch.
Tanya Lattner sent out a poll for the date/time for a GSoC/Outreachy brainstorming meeting.
LLVM 13.0.1-final has been tagged.
LLVM commits
A new tool, llvm-remark-size-diff, was introduced. It provides support for diffing size remarks (e.g. instruction count changes per function). ded733b.
New
--filter
and--filter-out
options were added to theupdate_*_test_checks.py
tools, allowing more focused tests to be written by selecting only a subset of the output. ecd46ed.A RISCVRedundantCopyElimination pass was introduced, which will remove unneeded copies of X0. 1d8bbe3.
Processor definitions were committed for the Arm Cortex-X1C. 6b1e844.
GlobalISel and SelectionDAG-based codegen for the Armv8.8/9.3 memory operations extension was implemented. 78fd413, 5aa08bf.
The concept of ‘query abstract attributes’ was introduced. These are abstract attributes that allow lazy queries during their lifetime. b51b83f.
The AArch64 and ARM backends were cleaned up so getInstSizeInBytes uses instruction size defined in tablegen, rather than hard-coding pseudo-instruction length in the body of getInstSizeInBytes. dd88f40, 762f0b5.
New optimisation remarks were added regarding memory dependencies in the case that vectorisation fails. 778b455.
A new PPC pass was added to convert standard math library calls to IBM MASS library calls. 256d253.
New GitHub Actions were added to help automate cherry-picking and testing fixes for the release branch. daf82a5.
Clang commits
Initial code has started to land for the clang pseudo-parser, starting with a ‘Grammar’ class and the C++ grammar. 20e05b9, e1db505.
Documentation was added for the OpenMP offloading driver. 28ab594.
Documentation was added for the StdCLibraryFunctionArgs checker. 280b430.
A Clang linker wrapper tool was introduced, allowing files to be preprocessed before being sent to the linker. Support was added to it for linking NVPTX offloading code. 95c8f74, d074458.
Other project commits
The old OpenMP device runtime was moved. 034adaf.
SPARCv9 support was added to libunwind. 2b9554b.
Implementations of POSIX mkdir, mkdirat, rmdir, unlink, and unlinkat were added to LLVM’s libc. b838516.
LLDB memory usage was reduced by avoiding construction of demangled strings while indexing the symbol table. aed965d.