LLVM Weekly - #455, September 19th 2022
Welcome to the four hundred and fifty-fifth 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
Herb Sutter has presented cppfront, a proposed potential C++ ‘syntax 2’.
Siddhesh Poyarekar writes on the Red Hat blog about new levels of fortification supported in GCC, providing additional protoection against buffer overflows.
On the forums
Peter Smith wrote up on notes on initialization code for embedded systems and how this could be applied to LLVM libc.
Aaron Ballman suggested adding a new Discourse forum for potentially breaking or disruptive changes for Clang. After some discussion, the conclusion was to use Announcements and to start adding the clang-vendors Phabricator project as a subscriber to relevant reviews.
Andrei Safronov started an RFC thread on upstreaming a Tensilica Xtensa backend.
Joshua Cranmer shared an RFC on adding opaque types to LLVM IR.
Gulfem Savrun Yeniceri is gauging interest in a profiling and coverage and compiler-rt roundtable at the 2022 LLVM Developers' Meeting.
Tobias Hieta started a discussion about centralising the source of truth for the current version of LLVM within the monorepo.
John Regehr asked about a minimal out-of-tree pass template. Andrzej Warzynski pointed to Hello-World from llvm-tutor.
Gabor Marton proposed adding a
branchTransfer
callback to Clang’s dataflow analysis framework.Chuang-Yu Cheng queried whether defining a single instruction with different operand types is preferred to multiple instruction definitions and received differing opinions in response.
LLVM commits
An IR regularisation pass was added for SPIRV, which performs a number of transformations in order to prepare the LLVM IR for the IR translation. 3544d20.
llvm-remarkutil was added, a utility for converting between different types of remarks. 7d80b94.
AArch64 implemented ABI lowering for calls to/from streaming SME functions and a design document on this ABI was committed. b00c36c, 4fc2c92, bd4935c.
TableGen will now produce a
getSubRegisterClass
function. 7834194.Fixes were made to the way the MachinePipeliner interprets the scheduling model. 116838b.
Clang commits
Clang release notes will now features a “potentially breaking changes” section. e076680.
-fsanitizer-coverage=control-flow
was added. 3e52c09.The link between
-ffast-math
and-ffp-contract
flags has been broken, matching GCC. 1b69ce1.
Other project commits
LLVM’s libc gained implementations of dup, dup2, dup3, access, pread, pwrite, remove, setrlimit, getrlimit, and uname functions. 8989aa0, 419580c, 6e675fb, d23d858, f5cbbb9, 7fb96fb.
The performance of exp2f, sinhf, and coshf in LLVM’s libc was improved. e6226e6, 1c89ae7.
Relocation scanning in the LLD ELF linker was parallelised, leading to meaningful speedups (e.g. 1.27x as fast for a release Clang with 8 threads on Skylake). e6aebff.
MLIR linalg’s vectorisation pattern was retired. 5279e11.