LLVM Weekly - #407, October 18th 2021
Welcome to the four hundred and 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 asb@asbradbury.org, or @llvmweekly or @asbradbury on Twitter.
News and articles from around the web
George Mitenkov, Nuno Lopes and Juneyoung Lee have written up a detailed article about their previous proposal to add a byte type This article summarises the previous discussion and tries to clarify raised concerns. Discussion continues on llvm-dev in a companion thread.
Pavel Loktev writes on the LLVM blog about generating relocatable code for embedded Arm processors.
The recording from the September 2021 Women in Compilers and Tools meetup is now available, featuring an interview with Teresa Johnson.
On the mailing lists
Anton Korobeynikov has provided an update on the bugzilla to GitHub issues migration. A further update reported that a test migration was attempted and the first set of issues identified.
Yitzhak Mandelbaum posted a detailed RFC on adding a dataflow analysis framework for the Clang AST (it seems the original post didn’t make it to the list, but the plain text content is quoted in the linked message). The proposal observes that a number of clang-tidy checks and compiler warnings are dataflow-based, but this is done in an ad-hoc fashion rather than reusing the same core functionality.
Martin Storsjö shared an RFC on adding support for preferring forward slash paths on Windows, noting this is one of the main downstream patches in MSYS2, and a barrier to Clang on Windows being used as a drop-in replacement for GCC.
Louis Dionne posted a detailed summary of upcoming changes of how libc++, libc++abi, and libunwind are built, including a list of anticipated questions and answers.
Martin Brænne proposed introducing a new annotate_type attribute, allowing an attribute to be added to a type for use in static analysis tools.
LLVM GPU News #21 is out.
ORC JIT Weekly #42 is out, providing details on recent work such as the JITLinkMemoryManager refactor.
Luís Ferreira started a discussion on upstreaming patches for demangling D language symbols.
LLVM commits
JITLinkMemoryManager has seen a major refactor. The major new features (described in more detail in the commit message) are 1) more asynchrony, 2) improve control over graph address layout, 3) efficient tracking of allocated memory, and 4) support for allocation actions and finalize-lifetime memory. e50aea5.
The operands-to-args pass was added to the llvm-reduce tool. This avoids introducing ‘undef’ by converting operands to function arguments. dd71b65.
The AArch64 backend will now emit an AssertZExt for i1 arguments, as any such arguments must be zero-extended to 8 bits by the caller according to the AAPCS. 7ae8f39.
Initial definitions were added to select Armv9-A, Armv9.1-A, and Armv9.2-A target architectures, and for the Cortex-A510 CPU. 3550e24, 97809c8.
The TwoAddressInstructionPass, used by X86, was improved to enable further register copies to be removed due to better decisions from isProfitableToCommute. 6599961.
PHI placement utility functions are now used for debuginfo variable values and machine values. a3936a6, b5426ce.
The RISC-V ISA string parsing logic was centralised was one location in LLVM, RISCVISAInfo. ff13189.
RISC-V immediate materialisation was improved in various cases where the bitmanip extension is present. 787eeb8, 481db13, 7e81526, 4fe5ab4.
Clang commits
git-clang-format now accepts a
--diffstat
parameter which will list files that need reformatting. 191a395.enable_noundef_analysis was renamed to disable_noundef_analysis and turned off by default. 80dba72, 8ca4b3e.
libTooling gained a ‘switch-like’ Stencil combinator. b6c218d.
Other project commits
LLVM'c libc gained implementations of strncat, memccpy, and mempcpy. 9e9803b, db8a88f.
libcxx now has an option to disable wide character support. f4c1258.
User-level documentation was added for MLIR’s python bindings. bacb0ca.
Operations in the MLIR std dialect that have now been moved to arith or math dialects have been removed from the codebase and tests. a54f4ea.
Parallel STL gained an initial implementation of an OpenMP backend. 6069a6a.