LLVM Weekly - #517, November 27th 2023
Welcome to the five hundred and seventeenth 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
Chris Lattner’s keynote on Mojo from the LLVM Dev Meeting is now up on YouTube.
Edgar Luque wrote an introduction to LLVM and MLIR with Rust and Melior (MLIR bindings for Rust).
The Google MLIR sparsifier team has a new site and logo, with the site hosting information on the project.
According to the LLVM calendar in the coming week there will be:
- Office hours with the following hosts: Johannes Doerfert.
- Online sync-ups on the following topics: Flang, MLIR C/C++ frontend, pointer authentication, libc++, classic flang, OpenMP, loop optimisations, OpenMP and Flang, MLIR open meeting, PowerPC, SPIR-V, MLGO.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
Peter Smith posted an RFC on supporting AArch64 build attributes for ELF relocatable objects, which would work similarly to the current AArch32 (Arm) build attributes.
Pallab Sutradhar asked about libraries for generating MLIR from Python code and was pointed to Nelli.
Amara Emerson started an RFC thread on encoding type information into floating point operations in GlobalISel, which is necessary for supporting bf16 alongside fp16 (as currently GISel attempts to infer the type based on the type width and the operation, which is ambiguous for bf16 vs fp16). Respondents suggest that extending LLT might be the path to go.
Nikita Popov proposes a policy of disallowing unmaintained and unused passes. Respondents so far are in favour.
Louis Dionne suggests clang-formatting all of libc++ in one go as it’s currently inconsistently formatted.
Fabian Mora followed up on the previous MLIR ‘address’ dialect RFC with an RFC for a ‘ptr’ dialect.
LLVM commits
The ‘disjoint’ flag was introduced for or instructions. This makes it easy to undo a transformation from
add
toor
if profitable. d9962c4.-filter-print-funcs
can be used with-debug-only=isel-dump
to to filter printed DAGs by function name. 0e24179.GuardWideningLegacyPass, LoopSinkLegacyPPass, LoopInstSimplifyLegacyPass, MergedLoadStoreMotionLegacyPass, UnifyFucntionExtNodesLegacyPass, AssumeBundleBuilderPassLegacyPass, LowerWidenableConditionLegacyPass, and ScalarizerLegacyPass, and many more were removed. d715e2c, b9975ce, cd11a7f, 8319e22, 3cc523d, 72ab995, 4671f18, 2470857.
A new shouldFoldSelectWithSingleBitTest hook was introduced. a756a6b.
llvm-exegesis switched from MCJIT to LLJIT. 92b821f.
Clang commits
Clang gained support for the
[[clang::code_align()]]
attribute, used to specify the byte alignment for a loop. 48ff354.A
std::variant
checker was added to Clang’s static analyzer. 527fcb8.The
[[clang::coro_lifetimebound]]
attribute was introduced. fbfd2c9.__attribute__((target())
is now supported for RISC-V. d80e46d.