LLVM Weekly - #378, March 29th 2021
Welcome to the three hundred and seventy-eighth 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 to asb@asbradbury.org, or @llvmweekly or @asbradbury on Twitter.
News and articles from around the web
The next post in the series about Cling is now available, discussing how Cling has been extended to support template instantiation on demand and to act as an “interpreter/compiler as a service”.
On the LLVM blog, Arthur Eubanks provided a write-up of the ‘new’ pass manager, detailing what it is, work that has been done to transition so far, and next steps.
Crystal, a programming language with Ruby-inspired syntax using LLVM as it’s codegen backend has just had its 1.0 release.
On the mailing lists
Jason Molenda posted an RFC on adding a new packet type to help describe a standalone binary for LLDB.
Simon Cook and John Byrd further discussed the potential of using Tablegen to generate an emulator core.
Sjoerd Meijer started a discussion on adding a function specialisation pass to LLVM, noting that’s it’s frequently raised as a reason for performance differences between GCC and LLVM and that the cost model is where previous proposals have had issues.
Philipp Reames shared a patch to better document community norms around reverts.
As part of the move from Bugzilla to GitHub, Anton Korobeynikov is requesting that users of the LLVM Bugzilla fill out a form to associate any emailed addresses used for that with their GitHub username.
Zequan Wu kicked off a thread on annotating global functions and variables to prevent identical code folding during linking.
Clement Courbet initiated an RFC discussion on adding range metadata to array subscripts, generating a quite a lot of discussion.
LLVM commits
Lit’s progress indicator is now more accurate, as it takes into account timings from previous runs. 962339a5.
As part of the long-running OpaquePtr work, the inalloca attribute now has a mandatory type argument. 4fefed6.
A
vscale_range
IR function attribute was added, representing the minimum and maximum values vscale can take. 48f5a39.A new llvm.experimental.stepvector intrinsic was added. 748ae52.
GlobalISel learned to lower funnel shifts. b24436a.
targetShrinkDemandedConstant for RISC-V will now preserve
(and X, 0xffffffff)
, which simplifies pattern matching. c40cea6.An LLJITWithRemoteDebugging example was added. 258f055.
Clang commits
The RangeSet datastructure used by the static analyzer was redesigned. 02b51e5.
Documentation was improved for the
[[clang::lifetimebound]]
attribute. 5fab603For C++2b (and as an extension, for previous standards with a warning), lambda without a parameter list are accepted. 0620e6f.