LLVM Weekly - #590, April 21st 2025
If you prefer, you can read a HTML version of this email at https://llvmweekly.org/issue/590.
Welcome to the five hundred and ninetieth 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 https://llvmweekly.org and pass it on to anyone else you think may be interested. Please send any tips or feedback via email: asb@asbradbury.org, or Mastodon: @llvmweekly@fosstodon.org / @asb@fosstodon.org, or Bluesky: @llvmweekly.org / @asbradbury.org.
EuroLLVM was a lot of fun last week. Thank you, as always, to everyone involved in organising.
News and articles from around the web and events
Cor3ntin wrote a fantastic run-down of recent improvements to Clang.
The next Toronto LLVM meetup will take place on April 30th.
The next Bay Area LLVM meetup will take place on April 28th.
According to the LLVM calendar in the coming week there will be the following:
- Office hours with the following hosts: Kristof Beyls, Amara Emerson, Johannes Doerfert.
- Online sync-ups on the following topics: ClangIR upstreaming, OpenMP, Flang, RISC-V, embedded toolchains.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
Reid Kleckner started an RFC proposal on changing LLVM_LINK_DYLIB to default ON on Posix platforms.
Gábor Horváth shared notes from the static analysis roundtable at EuroLLVM 2025.
cirt-os asked about increased file size with BOLT and ability to remove .botl sections.
Fraser Cormack proposed introducing elementwise clz/ctz builtins.
LLVM 20.1.3 was released.
“isuckatcs” wrote up a plan for prototyping ‘summary based analysis’ for the Clang static analyzer.
David Blaikie queried how people are doing post-commit review.
LLVM commits
The LLVM intrinsic string table was moved from character to string literal mission on non-MSVC platforms. 0a27c4e.
BranchRelaxation was ported to the new pass manager, completing the PreEmitPasses. b283ff7.
RegAlloc now uses whether a register is callee-saved or not as a tiebreaker before falling back to register ID. 74e8f29.
LLVM public interface annotations such as
LLVM_ABI
were documented. 3b91030.+nosimd
now works for AArch32 targets. 06da00a.16-bit floating point is now supported in the SystemZ backend. 6d03f51.
Range attributes can now be specified in Intrinsics.td. c3c0b27.
The LangRef now has a description of the semantics of call signatures. 7113010.
Incremental compile times when enabling/disabling a target should be much improved as the
LLVM_HAS_*_TARGET
macro definitions were moved to a separate header,Targets.h
, outside ofllvm-config.h
(which is included by most code, so changes cause cascading rebuilds). 667209e.Address matching in SDag patterns is now supported for X86 GlobalISel. e8245d5.
Clang commits
Clang bytecode disassembly printer can now print lines showing jump targets. 578ca5e.
Elementwise minnum/maxnum builtin functions were added. 58b5df0.
ClangIR minimal support for structure types was upstreamed. cd7d2c3.
A
-funique-source-file-names
flag was introduced. a5aa0c4, a1d52fc.Support was added for the
__ptrauth
type qualifier. a3283a9.-fextend-lifetimes
was enabled at-Og
. a9dff35.counted_by
andcounted_by_or_null
are now allowed on pointers where the pointee type is incomplete bu potentially completable. 59eafd1.
Other project commits
Initial Bolt instrumentation support was landed for 64-bit RISC-V. dbb79c3.
Flang now handles volatile types. c9ec1bc.
std::stable_sort
will now use radix sort for floats as well as integers. 51b8c66.lldb-dap now supports cancelling of requests. 2d30a60.
C APIs were added for the MLIR SMT dialect. 9deb08a.
The MLIR 1:N dialect conversion driver was deleted after its period of deprecation was completed. 23e3cbb.