LLVM Weekly - #571, December 9th 2024
Welcome to the five hundred and seventy-first 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 via email: asb@asbradbury.org, or Mastodon: @llvmweekly@fosstodon.org / @asb@fosstodon.org, or Bluesky: @llvmweekly.org / @asbradbury.org.
News and articles from around the web and events
Recordings from the 2024 LLVM Developers' Meeting are now available.
LLVM 19.1.5 was released.
The next LLVM Bay Area meetup will take place on December 16th.
According to the LLVM calendar in the coming week there will be the following:
- Office hours with the following hosts: Aaron Ballman, Alexey Bader, Alina Sbirlea, Kristof Beyls, Johannes Doerfert.
- Online sync-ups on the following topics: Flang, SYCL, new contributors, LLVM/Offload, classic flang, BOLT, OpenMP for Flang, MLIR.
- For more details see the LLVM calendar, getting involved documentation on online sync ups and office hours.
On the forums
Chris Bieneman posted an RFC on identifying contact information for voter registration, as part of implementing LLVM’s governance proposal.
Renato Golin started to share results from the MLIR project charter and restructuring survey.
Tanya Lattner is seeking volunteers for the 2025 EuroLLVM program committee.
Keith Smiley reported that Vim filetype support for LLVM can now be taken from a separate llvm.vim repo (this mirrors the relevant files from the monorepo).
In response to a question, Manuel Brito provided a summary of issues with GVN vs NewGVN.
After an expression of interest, Vasileios Porpodas has posted a rebased version of the initial spill2reg patch up for review again.
Jacques Pienaar is seeking feedback on a PR to move MLIR Python to nanobind from pybind11, noting that this led to meaningful performance improvements for MLIR lowering time of a Google-internal LLM model in JAX.
Igor Kudrin proposed extended llvm-objcopy to support editing notes in ELF binaries.
Rahul Reddy Chamala proposed adding a Python callback in LLDB for source file resolution. The idea is this would provide a flexible way of providing mechanisms for retrieving arbitrary source files from servers.
LLVM commits
A ‘Lime1’ (named after ‘linear memory’) target CPU was added for WebAssembly. 35cce40.
fptrunc and fpext IR instructions can now take fast math flags. ecbe4d1.
Experimental MC layer support was added for the Qualcomm RISC-V ‘Xqcia’ extension. 6881c6d.
SCEVExpansionBudget
was added toUnrollingPreferences
to allow backends to control the maximum budget for SCEV expansions. 4226e0a.WebAssembly target features were defined for “call-indirect-overlong” (a subset of “reference-types”, just enabling the overlong encoding for call_indirect immediate) and “bulk-memory-opt” (subset of “bulk-memory” just enabling memory.copy and memory.fill). c3536b2.
Skeleton versions of new AMDGPU register bank select passes were committed. fef54d0.
Clang commits
-fpointer-tbaa
was enabled by default, allowing more precise TBAA metadata. The commit message reports +2% more NoAlias results for memory accesses, +3% more stores removed by dead store elimination, +4% more loops vectorised. 7954a05.Frame pointers are disabled by default for bare metal ARM targets, matching GCC behaviour. 2f4eac6.
A new webkit static analyzer checker was added for memory unsafe casts. 51a5b77b.
For C++26, a deprecation warning will be emitted when a variadic parameter declaration isn’t preceded by a comma. 54fcf3e.
__has_extension(c_fixed_enum)
can be used to determine if support for fixed underlying enum types is present (as prior to C23, this is a language extension). 9791f25.The initial ClangIR types were upstreamed from the ClangIR incubator project. a43b2e1.
Clang config file options can now be prefixed with
$
if they are linker arguments that should be added after all the options specified on the commandline (rather than before). 755519f.
Other project commits
The old
hdrgen
in LLVM’s libc was deleted, removing the dependency on TableGen (and thus LLVM) in order to start bootstrapping a full build.newhdrgen
was renamed tohdrgen
. e0ae779, 06c831d.The documentation of LLVM’s libc was reorganised. a9aff44.
Libunwind’s support for the Haiku operating system was improved. 3b904ae.
Basic support for ARM64X dynamic relocations was added to the COFF LLD linker. 71bbafb.
A proof of concept LLDB data formatter bytecode was committed (documentation and an example interpreter). 0ee364d.
LLVM/Offload gained an
offload-tblgen
tool and an initial new API implementation. fd3907c.