LLVM Weekly - #493, June 12th 2023

LLVM Weekly - #493, June 12th 2023

If you prefer, you can read a HTML version of this email at http://llvmweekly.org/issue/493.

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, @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

and will feature a career chat and tech talk with Professor Alexa VanHattum.

The LLVM Social Bangalore will be held on June

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

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 use scavengeRegisterBackwards. 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.