LLVM Weekly - #457, October 3rd 2022
Welcome to the four hundred and fifty-seventh 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 [email protected], or @llvmweekly or @asbradbury on Twitter.
News and articles from around the web
The program for the 2022 LLVM Developers' Meeting has been announced. Additionally, registration for the MLIR Summit (taking place the day after the LLVM Developers' Meeting)is now open.
The LLVM blog features an article from Mark de Wever about text formatting in C++ using libc++.
The next LLVM Bay Area meetup will take place on Monday October 17th.
On the forums
Tanya Lattner reports that the Infrastructure Working Group (IWG) is on pause while the LLVM Foundation Board of Directors reviews its setup and goals. Tanya is also soliciting feedback/inputs on the IWG and potential next steps.
Max Kazantsev proposed an alternative approach for eliminating branches / range checks based on known preconditions, noting that the logic to do this currently only targets loop induction variables. Respondents pointed out the that ConstraintElimination pass could be used for this purpose, and Nikita Popov provided compile-time results from enabling this pass with rustc.
Tobias Hieta shared an LLVM 15.0.x release update. 15.0.2 is scheduled for Tuesday 4th October and 15.0.3 (expected to be the last 15.0.x release) for the 18th October.
Nikita Popov posted an RFC on unifying memory effect attributes, which has so far received very positive feedback.
Jakub Kuderski started an RFC discussion on defining precise semantics for the Arith MLIR dialect. This spawned discussion on areas such as whether to define poison and undef as in LLVM IR, which attracted feedback from Nuno Lopes. Jakub looped back to summarise the discussion so far.
Aaron Ballman started a thread detailing potentially breaking changes in Clang 16.
Maksim Levental bumped the RFC thread on
-load-pass-plugin
for mlir-opt.Jeff Niu posted an RFC on adding an index dialect to MLIR.
In an MLIR PSA, River Riddle noted that support for raw accessors is being removed, with the change likely to land in early November.
LLVM commits
A new
llvm::IntervalTree
datastructure was added to LLVM’s ADT library. It’s optimised for holding intervals and allows for querying which ones overlap. 6584d1f.The X86 backend no longer uses CostPerUse to assign different costs to registers based on the length of encoding, as this was found to reduce spills and improve performance by several percent, for only a 0.3% geomean code size increase. 189900e.
SimplifyLibCalls gained support for folding stpncpy. e80e134c.
llvm-remarkutil
gained an option to print out instruction counts. a4591a6.The
isMaskAndCmp0FoldingBeneficial
hook was implemented for the Arm target. 6602110.The WebAssembly backend now uses intrinsics for the table.get and table.set instructions. 1bd1a44.
The basic Neoverse V2 CPU definitions were added to the AArch64 backend. fbb1194.
The LLVM Developer Policy was updated to document the use of the
Co-author-by
git tag in commit messages. 4f4c44c.A new cost-benefit-based priority was added to the ModuleInliner. 4e9dd21.
Clang commits
The rules for loading default clang config files were made more flexible (see the commit message for a detailed summary of the new behaviour). 063e17d.
-fallow-half-arguments-and-returns
was changed to a target option. 123064dc.
Other project commits
The pthread_once, clock_gettime, sched_getaffinity, sched_setaffinity, and syscall functions were implemented in LLVM’s libc. 3367539, b49d626, 545b954, 1801c35.
The legacy libcxx testing configuration system was removed, now all testing has moved to the new style of Lit configurations. a48f018.
The ‘Arithmetic’ MLIR dialect was renamed to ‘Arith’. abc362a.