LLVM Weekly - #450, August 15th 2022
Welcome to the four hundred and fiftieth 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, or @llvmweekly or @asbradbury on Twitter.
News and articles from around the web
The next Toronto LLVM meetup will take place on August 17th.
The Zurich LLVM compiler social is due to restart on 6th September, featuring a talk on “Finding Missed Optimizations Through the Lens of Dead Code Elimination”.
The next LLVM Bay Area meetup will take place on Monday September 19th.
The HotChips conference will feature an MLIR tutorial. Meanwhile, The Workshop on Open Source EDA Technology has a call for papers, with CIRCT being very much on-topic.
On the forums
Fangrui Song proposes switching clang to GNU++17 as the default dialect. Although responses are largely in favour of the switch, Matheus Izvekov warns that although GCC made this move, they also implemented some tweaks to avoid compatibility issues.
LLVM 15.0.0-rc2 was tagged.
The slides and recording from the recent Open MLIR meeting on HeteroCL are now available.
Tobias Hieta kicked off discussion on updating the developer policy to clarify necessary steps for updating the minimum required compiler version and to give explicit guidance around updating the minimum C++ standard.
“tschuett” started an RFC thread on introducing a TargetInfo library in order to share ABI lowering logic between frontends. Although there’s lots of interest in this direction, one piece of feedback was that more of the API would need to be fleshed out to proper evaluate the approach.
Valentin Clement shared an RFC design doc on polymorphic entities lowering in flang.
There were multiple MLIR RFCs this week - EnumAttr for iterator types in Linalg, unifying kDynamicSize and kDynamicStrideOrOffset, and a proposal for a pass tha treplaces arith ops on tensors to arith ops on scalars in the linalg dialect.
Daniel Thornburgh shared a detailed write-up of an issue involving LTO, deplibs, and libcalls.
Christoffer Lerno raised concerns about LLVM-C API breakage arising from the removal of various constant expressions. One suggestion was to add a new C API to provide the constant folding functionality that can still be supported.
H Vetinari asked about the rationale for removing versioned libclang. Tom Stellard posted a run-down of related bug reports.
LLVM commits
Support for SPIR-V capabilities and extensions was added to the SPIR-V backend. df87130.
A
SelectionDAG::canCreateUndefOrPoison
helper was implemented. 9641a20.Big-endian AArch32 disassembly in llvm-objdump was fixed. 72017e9.
LLVM_FALLTHROUGH
was replaced with[[fallthrough]]
in the codebase. de9d80c.A target feature to force-enable atomics was added to RISC-V, to allow atomic operations to be lowered to lock-free helpers. f5ed0cb.
The
isUsedByReturnOnly
hook was implemented for RISC-V, allowing many more libcalls to be tailcalled. 47b1f83.
Clang commits
The Clang C and C++ status pages were updated. e640250, bcc90f6, ba79c2a.
__bf16
was enabled for X86 targets where SSE2 is available. e4888a3.A bug in
git-clang-format --staged
was fixed. 3f801e0.The cppcoreguidelines-avoid-const-or-ref-data-members clang-tidy check was added. 9ae5896.
Other project commits
The ORC runtime gained initial support or the COFF/x86_64 platform. 9189a26.
pthread_exit
,thrd_exit
,pthread_key_{create,delete}
, andpthread_{get,set}specific
were implemented in LLVM’s libc. 0071a79, 4a738ee.libunwind will use
_dl_find_object
if available, resulting in improved performance for unwinding on multi-threaded programs. df9a23e.RISC-V register definitions and read/write support were added to LLDB. 7bece0f.
Polly’s pattern matching was extended to cover tensor contractions. A future patch will add optimisations. b02c7e2.