LLVM Weekly - #370, February 1st 2021
Welcome to the three hundred and seventieth 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
On the LLVM blog, Serge Guelton, Sylvestre Ledru, and Josh Stone explain bringing stack clash protection to Clang/x86, describing cross-project collaboration that produced this support.
David Malcolm explained static analysis updates in GCC 11.
Arseny Kapoulkine posted an analysis of generated code performance and build time for Clang 2.7 vs recent versions. This was also discussed on HN.
On the mailing lists
-
LLVM trunk is now 13.0.0 and 12.0.0-rc1 has been tagged.
-
James Henderson kicks off an RFC thread on lit tests spanning multiple LLVM projects, e.g. using both Clang and LLD.
-
Rafael Auler provides a status update on the BOLT framework, which is currently being rebased on a recent upstream LLVM.
-
Arthur Eubanks proposes turning on the new pass manager by default. This spawned a sub-thread about bugpoint and the new pass manager.
-
Min-Yih Hsu reports that the M68k LLVM backend is almost ready to land upstream.
-
Vasily Kulikov posted an RFC on adding concurrency checks to clang-tidy intended to be helpful for catching calls to synchronous code in coroutines/fibers/green threads. Some respondents are concerned that this approach may be too shallow, and people would realistically want cross-module analysis.
-
Chris Tetrault is seeking to enforce the minimum version of Python as 3.6. The ensuing discussion covers the fact that the current wording of the requirements states this version is the version "known to work" rather than necessarily the minimum.
-
Duncan P. N. Exon Smith proposing virtualizing compiler outputs in Clang, allowing compiler outputs to be captured easily without going through the filesystem.
-
Maxim Kazantsev kicks off a discussion about loop alignment in X86 codegen and the relatively large performance swings it can produce.
LLVM commits
-
Targets can now define multiple CostPerUse values per register, allowing a more flexible cost model. 892e456.
-
The RISC-V backend gained a mix of minor codegen improvements. 4eb4f89, 15f66cf, 5d05cdf.
-
PowerPC will now attempt to reduce register pressure by seeking more opportunities to generate fma instructions. 0ed4cf4.
-
Exception handling was enabled for JITLink. 6884fbc.
-
LLVM trunk is now version 13. 5369517.
-
SinkIntoLoop was moved from MachineLIM to MachineSink. 48ecba3.
-
LLVM's DebugInfo library can now extract the unwind rows for DWARF Call Frame Information, and this is used to be produce more informative llvm-dwarfdump and llvm-objdump output. f8122d3.
-
A new
G_ASSERT_ZEXT
generic opcode was added for GlobalISel. 2426172.
Clang commits
-
A new
/winsysroot
flag was added for clang-cl, providing similar functionality to--sysroot
on other platforms. 8284743. -
Clang now supports RISC-V architecture extension test macros, which can be used to check the presence of support for an architectural extension and the version supported. 666815d.
-
It is now possible to apply profile instrumentation to just a selected set of files or functions. bb9eb19.
-
-fbinutils-version=
was added to gate ELF features on a specified binutils version. 34b60d8. -
clang-format can now align assignments when the group of assignments includes empty lines or comment lines. 2563147.
Other project commits
-
libomptarget gained a remote offloading plugin, allowing execution of OpenMP target regions on devices in remote hosts. ec8f4a3.
-
LLDB can now run a Lua function when a breakpoint is hit. 532e420.
-
libcxx has started to implement the
<format>
header, adding initial support for theformat_error
class. 081c1db.