LLVM Weekly - #389, June 14th 2021
Welcome to the three hundred and eighty-ninth 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
Inspired by the recent thread on introducing a ‘byte’ type to LLVM IR, Nicolai Hähnle blogged about the challenges of implementing memcpy in LLVM IR
The competition to build Clang and LLVM in the fastest time possible continues, with Takumi Nakamura demonstrating a build in under 60s on the AWS c5a.24xlarge.
Herb Sutter wrote up a trip report from the Summer 2021 ISO C++ standard meeting.
On the mailing lists
Reid Kleckner kicked off an RFC thread on revisiting the LLD-as-a-library design. There is broad support for making LLD usable as a library, with a few concerns about how this might impact the work-in-progress MachO linker.
Chris Lattner shared some thoughts about the recent blog post on design issues in LLVM IR.
Philip Reames followed up on the thread on moving to Discourse, sharing thoughts on the potential drawbacks of this move.
Anastasia Stulova proposes changing the default version for OpenCL kernel compilation to OpenCL 1.2 (from 1.0).
Nicolai Hähnle responded to the thread on introducing a byte type to LLVM, providing a summary of the issues.
Ellis Hoag shared an RFC on adding MachineIR Profile, a new instrumentation pass that can produce optimisation profiles with a focus on binary size and runtime performance of the instrumented binaries.
Necip Yildiran posted an RFC on computing, storing, and restoring conservative call graphs with LLVM. The goal is to store sufficient information to allow the call graph to be constructed while source information is present, and store it in a non-code section of the binary.
Sameer Sahasrabuddhe responded to the previous thread about abstracting over SSA form IRs to implement generic analyses with some statistics on the performance cost of introducing virtual calls.
LLVM commits
A function specialisation pass was added. As explained in the commit message, it isn’t yet enabled by default but the hope is to enable it for
-O3
and above in order to close the gap for a number of benchmarks where GCC produces better code than LLVM. c4a0969.A post-processing step was added for block frequency info inference in order to correctly handle CFGs with irreducible loops. 0a0800c.
A new option was added to the CFGPrinter to hide ‘cold’ blocks from the emitted graph. 9197bac.
LLVM’s Sequence type is now reverse-iterable. e056903.
Clang commits
The C++ P1099 “using enum” proposal was implemented. 012898b, b2d0c16.
The OpenMP
#pragma omp unroll
directive was implemented. a222361.A status page for tracking C proposals was added. 3a7a774.
Other project commits
Fixed-width literal and cstring deduplication was implemented in the MachO linker. 04259cd, 5d88f2d.
mlir-lsp-server now supports textDocument/documentSymbols, allowing for easy navigation to functions/modules. ff81a2c.
The
alloca_scope
op was added to MLIR. fdc0d43.Patches implementing OMPD (an OpenMP debugging interface) started to land. f61602b0.
LLVM’s libc gained an implementation of expm1f. 4e5f8b4.
range.subrange was added to libcxx. 9106047.