LLVM Weekly - #500, July 31st 2023
Welcome to the five hundredth 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.
As you may have noticed, today marks the milestone of 500 issues (and still, amazingly, not a single week missed). Thank you everyone for reading! The big one for me is going to be the 10 year mark, coming up on January 1st 2024.
News and articles from around the web and events
The call for speakers deadline for the LLVM Developers' Meeting has been extended to August 4th.
Even more video recordings from EuroLLVM were uploaded.
Trail of Bits blogged about the future of Clang-based tooling, which discusses projects such as PASTA (a C++ and Python wrapper around much of Clang’s API) and VAST, a new MLIR-based middle-end to Clang.
The next LLVM Bay Area Monthly meetup will take place on Monday August 14th.
Version 2.0.0 of the mold high-speed linker has been released, moving from AGPL to the MIT license.
According to the LLVM calendar in the coming week there will be:
- Office hours with the following hosts: Anastasia Stulova, Johannes Doerfert.
- Online sync-ups on the following topics: OpenMP, Clang C/C++ language working group, Flang, RISC-V, MLIR open meeting, HLSL, MLGO.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
The LLVM 17.x release branch has been created and 17.0.0-rc1 was released. There’s now new guidance on adding release notes (file a PR rather than committing directly - see here for more background).
Pierre van Houtryve posted an RFC on overhauling MIR patterns for GlobalISel combiners, continuing previous work on MatchTable-based GlobalISel combiners.
Alex Voicu shared an RFC on adding C++ parallel algorithm offload support to Clang and LLVM. It attracted a fair amount of discussion, covering issues such as the relationship with PSTL, libcxx, and Clang’s extensions policy.
Anton Korobeynikov shared meeting minutes from the most recent LLVM pointer authentication sync-up and noted the plan is to now start meeting once a week.
Mehdi Amini kicked off a discussion about MLIR’s relationship with LLVM releases, suggesting that effort to document changes from one release to another is increased and that the community considers backporting bug-fixes to the release branch when appropriate.
Ramkumar Ramachandra is seeking input on the blockers to turning on GVNSink by default.
Mehdi Amini shared a PSA on MLIR binary footprint with some figures on the program size of various minimal utilities.
Tom Stellard returned to an old thread on supporting
LLVM_BUILD_LLVM_DYLIB
on Windows.Maksim Levental is collecting examples of confusing error messages from MLIR.
LLVM commits
Trunk is now 18.0.0git. ab72028.
APIs were added to manipulate InterfaceFiles, the in-memory representation for tbd files. 16c1f43.
GlobPattern from the Support library was rewritten. 4553dc4.
Additional instructions from the v4 ISA are now supported in the BPF backend. 6c412b6.
The
GIntrinsic
subclass ofGenericMachineInstr
was introduced. 7c760b2.A new code layout algorithm for function reordering was added. bc59faa.
Codegen support was added for the RISC-V BFloat16 zfbfmin, zvbfmin, and zvbfwma extensions. f375ee3, 2b6df4a.
MC layer support was added for the vendor-specific XCValu, XCVsimd, and XCVbi RISC-V extensions, used in the open source CV32E40P. 092e60a, 3c0604b, afb9c04.
Initial mapping symbol support for RISC-V was committed. a0d8a53.
Clang commits
The bugprone-empty-catch, performance-enum-size, bugprone-multi-level-implicit-pointer-conversation, and readability-reference-to-constructed-temporary checks were added to clang-tidy. 047273f, 3397dae, 315946c, 87d0aed.
Clang’s support for ‘HIP’ (Heterogeneous-Compute Interface for Portability) was documented. 795e934.
LoongArch gained support for
-march=native
and-mtune
. c56514f.__builtin_elementwise_pow
was added. 3a98e73.The
AlignConsecutiveShortCaseStatements
clang-format option was introduced. 74720d1.Documentation for the taint propagation checker was improved. 4dbe2db.
Other project commits
LoongArch support landed in LLD. 6084ee7.
std::mdspan
was implemented in libcxx. fc48765.Minimal example MLIR tools were added, which serves to demonstrate MLIR’s binary footprint. e.g.
mlir-cat
including the core IR, textual parser/printer and support for bytecode is 2MB in a Release build. e7f8b45.LLVM’s OpenMP lib’s command line reference was extended, documenting command-line options relevant to offloading. 5c0f98c.