LLVM Weekly - #493, June 12th 2023
Welcome to the four hundred and ninety-third 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, or @llvmweekly@fosstodon.org or @asb@fosstodon.org.
News and articles from around the web and events
The next Women in Compilers and Tools Meetup will take place on July 13th and will feature a career chat and tech talk with Professor Alexa VanHattum.
The LLVM Social Bangalore will be held on June 17th.
According to the LLVM calendar in the coming week there will be:
- Office hours with the following hosts: Alexey Bader, Aaron Ballman, Alina Sbirlea, Kristof Beyls, BOLT developers, Michal Paszkowski, Johannes Doerfert.
- Online sync-ups on the following topics: Flang, SYCL, OpenMP, classic Flang, loop optimisations, OpenMP in Flang, MLIR, SPIR-V.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
Thanks to Javed Absar, MLIR News is back, with the 48th edition published on 7th June.
Slides from the last MLIR meeting (covering Numba) are now available.
David Spickett posted an RFC on AArch64 Scalable Matrix Extension support for LLDB.
Sam McCall proposes removing the Clang “pseudo” parser as the original authors are no longer working on it and it has no uptake beyond those original authors.
Jeremy Morse shared an update on instruction API changes to eliminate debug intrinsics after his EuroLLVM presentation on the topic.
“fabianmc” provided a recap of the conversation so far on on extending the MLIR GPU device codegen pipeline.
Renato Golin started a discussion about a potential tile dialect and/or reshuffle of existing dialects in MLIR.
Siva Chandra kicked off an RFC thread on allocators in LLVM’s libc for the embedded use case.
Nikolas Klauser proposed enabling C++11/c2x attributes in all standard modes in Clang as an extension.
LLVM commits
llvm.ldexp and llvm.experimental.constrained.ldexp intrinsics were introduced. eece6ba.
Intrinsics were introduced for accessing the floating point environment. eecaeb6.
GlobalISelEmitter.cpp was refactored into multiple files. d19a383.
New intrinsics for working with buffer resources were added to the AMDGPU backend, as well as defining address space 7 for buffer fat pointers and address space 8 for buffer resources. faa2c67.
The
llvm.experimental.get.vector.length
intrinsic is lowered to vsetvli on RISC-V for some cases. b64ddae.AArch64 LLVM now has parity with GNU tools in terms of support for
.arch
and.arch_extension
. 4b8d9ab, a499d67.The
llvm-profdata order
command was introduced, using the BalancedPartitioning algorithm to compute a function order that reduces the number of page faults during startup. 1117b9a.A new
LLVM_ENABLE_LLVM_LIBC
option was enabled to build LLVM lib in overlay mode and link all generated executables against that overlay. 8df5841.scavengeRegister
was removed, as all users have now been converted to usescavengeRegisterBackwards
. c66c5924.The
ResourceSegments
abstraction was introduced to the MachineScheduler. aee3400.G_CONSTANT_FOLD_BARRIER
was introduced to GISel, as an opaque barrier to prevent constant folding. 1c2c668.PreISelIntrinsicLowering gained the ability to expand memory intrinsics if the target doesn’t have a corresponding libfunc. 3c84819.
Clang commits
WebAssembly table types are now supported in Clang when targeting WebAssembly (and appropriate
__builtin_*
functions are introduced and documented in LanguageExtensions.rst). 55aeb23.As a Clang extension, the first operand to
_Generic
can now be a type rather than an expression. 12728e1.Clang now respects the
NO_COLOR
environment variable. da0a7d5.-Wunsafe-buffer-usage
now generates fix-its for function parameters that are raw pointers used unsafely. 1e270be.
Other project commits
BOLT gained support for matching “stale” profiles (those collected from binaries built on older versions of code). 4426827, 2316a10.
Basic malloc, free, puts, and fputs support was added to LLVM’s libc for GPU targets. a621308, e6c401b.
Three approaches for printing decimal floats were added to LLVM’s libc. 688b973, 47fd67e.
A tree sitter grammar for MLIR was added. 10f8be1.
Support for the concept of “promised” interfaces was added to MLIR. This allows a dialect to “promise” the implementation of an interface (declare it supports it), but have the interfaces defined in an extension in a library separate from the dialect itself. a5ef51d.