LLVM Weekly - #425, February 21st 2022

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

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, and libgcc_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.

1 Like

Wrong link. I believe it’s supposed to be RFC: Adding a SCEVCompareExpr to ScalarEvolution - IR & Optimizations - LLVM Discussion Forums.

1 Like

Thanks - now fixed.