LLVM Weekly - #425, February 21st 2022
Welcome to the four hundred and twenty-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
A new paper Compiler Support for Sparse Tensor Computations in MLIR discusses adding support to MLIR for generating sparse code automatically from a sparsity-agnostic definition of computation.
Learning Branch Probabilities in Compiler from Datacenter Workloads presents an approach to use machine learning to estimate branch probabilities.
Jonathan Salwan published the VMprotet-devirtualization repo, an approach to devirtualizing pure functions proteted by VMProtect 3.x (lifting the symbolic representations to LLVM IR).
On the forums
Nikita Popov provided a status update on opaque pointers. It’s now possible to compile most C/C++ code, with or without optimisation, in opaque pointer mode. There’s more work to be done, but the end is in sight. Congratulations and thank you to everyone involved so far.
Stella Laurenzo proposed a new ‘ml_program’ MLIR dialect, intended to support the common structural components needed to represent compiled programs from popular machine learning frameworks.
Fangrui Song started a thread to discuss speeding up LLD through parallel input file parsing and the changes that would be needed to support this.
Tanya Lattner shared notes and next steps from a recent meeting about Outreachy and GSoC internships.
Matthias Gehre kicked off an RFC discussion on adding support for division of large
_BitInt
.Yuanfang Chen is working on adding an equivalent to MSVC’s “Just My Code” stepping in LLDB and is looking for input from people interested in this feature.
Anton Korobeynikov created a pinned topic providing guidance on LLVM in GSoC 2022.
Philip Reames shared an RFC on Adding a SCEVCompareExpre to ScalarEvolution. Unfortunately it’s not had any responses yet, so please do take a look.
Fangrui Song proposed changing the behaviour of Clang searching for multiarch include and library paths in the presence of
--target
.
LLVM commits
The frontend performance tips document was updated to recommend the use of poison values instead of undef and to tag function attributes with noundef where possible. 8608650.
The ‘uwtable’ attribute was extended with the unwind table kind (sync/async). 6398903.
A ‘ptrauth’ (pointer authentication) operand bundle was introduced. c703f852c.
llvm.vp.fptosi.*
intrinsics were added. 03e83cc.Documentation was updated on opaque pointers and the migration to using them. 4846568.
MC layer support for the RISC-V ‘Zfinx’ extension (floating point support without a separate FP register file) was added. 7798ecc.
The AArch64MIPeepholeOpt pass was expanded to cover the SUBS and ADDS instructions. c69af70.
Clang commits
The memory overhead of
#define
directives was reduced. For a file with 7.8 million#define
directives, the persistent memory allocation footprint was reduced from 5.28GB to 4.07GB. 00cd6c0.Support was added for the
[[noreturn]]
attribute in C2x. 5029dce.The
disable-noundef-analysis
flag was renamed to-[no-]enable-noundef-analysis
to better match the naming conventions of other flags. b529744.
Other project commits
A new llvm-libgcc folder was added, containing files to allow building libunwind as a libgcc “front” that can be used to replace
libgcc.a
,libgcc_eh.a
, andlibgcc_s.so
(see the commit message for more details). c5a20b5.The ‘oilist’ (order-independent list of clauses) primitive was added to MLIR. 5bec1ea.
The upstreaming of the fir-dev branch to Flang continues, with patches landing to support lowering basic functions with a scalar integer/logical return value, simple scalar assignment, and more. ad40cc1, e641c29.
A platform-independent buffered file I/O data structure was added to LLVM’s libc. 4ef02da.
The llvm-libc index page was rewritten. 171cb8f.
libcxx will now run clang-tidy during CI. f10909a.