LLVM Weekly - #425, February 21st 2022
If you prefer, you can read a HTML version of this email at http://llvmweekly.org/issue/425.
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.