LLVM Weekly - #340, July 6th 2020
Welcome to the three hundred and fourtieth 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 [email protected], or @llvmweekly or @asbradbury on Twitter.
News and articles from around the web
The 2020 Virtual LLVM Developers' Meeting call for presentations has an upcoming deadline of July 15th. The conference will take place on October 6th-8th.
On the mailing lists
-
Chris Lattner wrote up a proposal for LLVM incubator projects, based on the previous mailing list discussion.
-
Stephen Neuendorffer proposed CIRCT as an incubator project. CIRCT is an effort to adapt MLIR for hardware design.
-
Last week's thread on compiled regression tests has seen significantly more discussion. Chris Lattner shared further motivation about LLVM's current testing approach, strongly arguing in favour of testing via textual interfaces wherever feasible.
-
Duncan Exon Smith proposes adding a temporary staging branch to facilitate upstreaming. The motivation is to allow collaboration on the upstreaming of a large set of patches from Apple. The emerging consensus appears to be to create the branch on another copy of the LLVM monorepo within the LLVM GitHub organisation.
-
Alexandre Ganea proposed replacing the default memory allocator on Windows, demonstrating huge speedups on a 36-core machine when switching to mimalloc, rpmalloc or snmalloc (from 38m47s to link LLD with
-flto
down to ~2m20s). -
Shan Landden posted an RFC for adding a carry-less multiplication instruction to LLVM IR.
-
Nicolai Hähnle shared an RFC on introducing new classes and templates to allow writing algorithms that are generic over different types of CFG.
-
"MyDeveloperDay" proposed semi-automatically clang-formating files in the monorepo that have been unmodified for 6-12 months.
-
Nicolai Hähnle provided a very positively received heads-up that target-specific intrinsics in InstCombine will soon be handled via a TargetTransformInfo hook, meaning all the target-specific logic can be moved to lib/Target/.
-
Denis Steckelmacher asked for advice on handling far branches on architectures with restricted branch range and helpfully followed-up to summarise the identified paths forward.
-
Louis Dionne sent a reminder about the plans to upgrade the minimum required CMake version for LLVM after the 11.0 branch.
-
Nathan Huckleberry shared a proposal for instrumenting Clang/LLVM with the Perfetto event based tracer.
LLVM commits
-
The
INLINEASM_BR
MachineInstr is now modelled as a non-terminating instruction, which is more appropriate now it supports output values. 4b0aa57. -
Bitfield utilities were added to LLVM's ADT library. b56b467.
-
New MVT types were added as a pre-requisite for RISC-V vector extension support. a7b0f39.
-
X86 CPU feature initialisation was moved to a lookup table implementation. 3537939.
-
The AArch64 backend regains performance on a SPEC2006 benchmark by implementing getCFInstrCost and treating branches as free for throughput. 1ccc499.
-
Mips, PPC, and RISCV targets have been migrated away from TargetFunctionInfo depending on the MachineFunction state on construction. 669bb31, d9f0c36, 08649f0.
-
The setJumpIsExpensive and setHasMultipleConditionRegisters hooks were implemented for the RISC-V backend. 7dc8926.
-
The PowerPC backend gained probing for dynamic stack allocation, as part of supporting
-fstack-clash-protection
. 03828e3. -
Support was added for the Cortex-A77. 8bf99f1.
Clang commits
-
clang-format gained the ability to preserve whitespace in selected macros. 0c332a7.
-
Support for AST matchers taking regex arguments was improved. f51a319.
-
clangd now runs formatting operations asynchronously. ffa63dd.