LLVM Weekly - #540, May 6th 2024
Welcome to the five hundred and fortieth 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
I didn’t spot any particular articles or blog posts this time. As always, feel free to email me anything relevant.
According to the LLVM calendar in the coming week there will be the following:
- Office hours with the following hosts: Kristof Beyls, Johannes Doerfert.
- Online sync-ups on the following topics: pointer authentication, AArch64, new contributors, OpenMP, Flang, BOLT, RISC-V, LLVM libc, MLIR.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
Xuan Zhang posted part 1 of an RFC on enhancing the MachineOutliner and Kyungwoo Lee posted part 2.
Joshua Cranmer kicked off a detailed RFC thread on improving IR fast-math semantics.
Francesco Bertolaccini proposed adding a ‘stack’ dialect to MLIR, intended to model stack-based languages like CIL, JVM, or Etherum bytecode.
Benjamin Maxwell shared a PSA about changes to the ArmSME lowering pipeline in MLIR.
Reid Kleckner proposed a modification to the developer policy to give a position on the use of AI tools in contributions.
James Y Knight started an RFC discussion on deprecating Clang’s -Ofast argument, which generated far too much discussion for me to usefully summarise.
Fangrui Song is looking for an additional reviewer for the utility to generate elaborated assembly/IR tests.
Lawrence Benson sought feedback on introducing a new intrinsic for masked vector compress without store.
Joshua Cranmer provided insight on the tradeoffs using target extension types vs existing types.
The hdoc developers reached out with an RFC to improve Clang’s comment parsing to conform better to Doxygen semantics, linking to several PRs already posted to help implement this.
Nikita Popov initiated an RFC on adding nusw and nuw flags to getelementptr.
LLVM commits
LLVM switched from using debug intrinsics internally to using debug records by default. Debug intrinsics will only be supported on a best-effort basis from now on. 91446e2.
llvm-mca learned the
-skip-unsupported-instructions
option. 5f79f750.AggressiveInstCombine learned to inline
str[n]cmp
where one of the strings is small and constant (and in the case of strncmp, the length is constant). 6b94870.The set of opcodes recognised by
canCreateUndefOrPoison
was increased. b3c55b7.LLVM vector interleave2/deinterleave2, reverse, and splice intrinsics are no longer in the experimental namespace. bfc0317.
The RISC-V disassembler can now support instructions up to 176 bits in length. 618adc7.
TLSDESC codegen was added for LoongArch. 09e7d86.
The MachineCombiner was enabled for floating point reassociation of add, sub, and mul on SystemZ. 6c32a1f.
A new PatternMatch API was added for matching constants using custom conditions. d8428df, f561daf9.
Clang commits
C++17 support in Clang is now viewed as complete, with the enablement of C++17 relaxed template template argument matching being turned on by default acting as the last piece of the puzzle. b86e099.
Scalable vectors are now supported for the
__builtin_reduce_*
functions. bd07c22.-fexperimental-late-parse-attributes
was added to enable an experimental feature allowing late parsing of certain attributes in specific contexts where they wouldn’t notmally be late parsed. b1867e1.WebAssembly reference types were disabled for the generic target because it changes the encoding of
call_indirect
. 8c64a30.