LLVM Weekly - #429, March 21st 2022
Welcome to the four hundred and twenty-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 http://llvmweekly.org and pass it on to anyone else you think may be interested. Please send any tips or feedback to [email protected], or @llvmweekly or @asbradbury on Twitter.
I'm delighted to share that I've joined Igalia's compilers team. Established 20 years ago, Igalia are a worker-owned cooperative employing over 100 developers who make huge contributions to a wide range of upstream open source projects. I couldn't be more excited to be part of it! You can now expect to see me cropping up on lib/Target/WebAssembly in addition to the usual lib/Target/RISCV.
News and articles from around the web
Sudara blogged about how to create LLDB type summaries and synthetic children for your custom types.
On the forums
Tobias Hieta re-summarised the status of the proposal to increase the GCC and Clang requirements to support C++17 in LLVM.
Serge Guelton provided an update on the include cleanup with a graph showing the changes in the number of lines output by the preprocessor when building libLLVM.so.
Ellis Hoag shared details of how to use lightweight instrumentation and its results.
Tanya Lattner reshared an update from Discourse on changes to outgoing/incoming email.
The recording and slides from the MLIR meeting on ml_program are now available. As are the ones from the meeting on interfaces and dialects for controlling transformation.
Alex Zinenko shared an MLIR RFC on interfaces and dialects for precise IR transformation control.
Michał Górny shared a proposal for more complete multiprocess support in LLDB.
LLVM commits
Whole program devirtualisation’s checking mode was extended to support fallback to indirect call. fee0bde.
Calls to
__divei4
and related builtins will now be emitted for division/remainder of large integers. 09854f2.Opaque pointers are now automatically detected in .ll files, meaning it’s not necessary to specify
-opaque-pointers
when updating IR tests from typed pointers to opque pointers. 295172e.The RISC-V backend gained support for the experimental Zvfh extension to support half types in vectors. bbd2ecf.
More details were added to the MemorySSA docs 187a5f2.
A new TableGen backend was added that generates X86 mnemonic-based opcode groupings. fdcb256.
A CMake flag was added to turn
llvm_unreachable
intobuiltin_trap
when assertions are disabled. 7b98391.The Arm backend’s use of atomic expansion routines was fixed to use libatomic APIs on platforms where
__sync_*
routines aren’t known to exist. 2f497ec.
Clang commits
ext_vector_type can now be applied to booleans, allowing vectors of bools, which are intended to be used for vector mask registers. 0aab344.
The ‘tune-cpu’ IR attribute is now set with the precise name of the X86 processor being targeted. dc15265.
Literal suffices for
_BitInt
were introduced. 8cba721.The pseudoparser was moved from clang to clang-tools-extra. b97856c.
Multiple attributes can now be specified in
#pragma clang attribute push
. 33a9eac.
Other project commits
End-to-end codegen tests were added for wasm_simd128.h. 7062094.
Many patches for lowering of additional constructs and intrinsics were landed in Flang. 67b23fe, 308fc3f, and much more.
LLVM’s libc gained an implementation of lseek. 827575a.
Instructions were added for building LLDB with Intel Processor Trace support. 752e9cd.
Detailed documentation was added for the PDL Language (PDL), a custom frontend language for writing pattern rewrites targeting MLIR. 943ad66.
An initial language server was added for PDLL. 52b34df.
The MLIR bufferization documentation was updated. 975284a.