LLVM Weekly - #420, January 17th 2022

LLVM Weekly - #420, January 17th 2022

If you prefer, you can read a HTML version of this email at http://llvmweekly.org/issue/420.

Welcome to the four hundred and twentieth 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.

As a reminder, LLVM is moving to Discourse. From this issue onwards, LLVM Weekly is being posted to the LLVM Discourse forum rather than llvm-dev (which is currently due to be shut to new posts from February 1st).

News and articles from around the web

The Women in Compilers and Tools Working Group in collaboration with PyLadies London are interviewing Anna Ossowski for the January meetup, which will take place on Thursday January 27th, 6pm GMT.

Keith Seitz has been writing about GDB on the Red Hat blog. The most recent article gives an overview of the format of DWARF debug info and how to inspect it.

On the mailing lists

LLVM commits

  • X86 optimizeCompareInstr was extended to re-use previous comparison results if the previous comparison was an immediate that was 1 bigger or smaller. ad25f8a.

  • The RISC-V backend was taught to recognise newly defined CSRs in the most recently ratified privileged specification as well as the “Count Overflow and Mode-Based Filtering” (Sscofpmf), “RISC-V State Enable” (Smstateen), and "RISC-V “stimecmp / vstimecmp” (Sstc) extensions. edb9175, f00a98a, 1ca7982, 0ee679e.

  • The RISC-V bit manipulation extensions Zba, Zbb, Zbc, and Zbs and the half-precision float extensions Zfh and Zfhmin were recently ratified and are no longer considered experimental by LLVM or Clang. 33d008b, a0a76fe.

  • SimplifyCFG will now be more aggressive when sinking into a block followed by unreachable. 82c8aca.

  • The CSKY backend gained support for lowering leaf DAG nodes such as global symbols, frame address, jump table. 8ddc816.

  • The CSSKYConstantIslands pass was added to place constants close to close to code that uses them. 065e032.

  • llvm-mca now uses the MCA-specific IsAStoreBarrier and IsALoadBarrier flags to determine whether an instruction should be treated as a memory barrier. 85e6e74.

  • Strictfp support for compares was added to the RISC-V backend. 63b17eb.

  • The Dlang demangler was extended with support for simple basic types, symbol back references, and type back referencing. 669bfcf, bec0879, b21ea1c.

  • FileCheck was changed to allow literal [ characters before [[var...]], which allows many patterns for matching assembler output with literal brackets to be written in a simpler way. 821dd3b.

  • The inliner was tweaked to delete more unused functions (linkonce_odr rather than just internal/private). 9a0fe1b.

  • Documentation on opaque pointers was improved, discussing migration pitfalls amongst other updates. 3bbf7f5.

Clang commits

  • A new -misc-misleading-bidirectional clang-tidy checker was introduced. It will warn about unterminated bidirectional unicode sequences, detecting potential attacks as described in Trojan Source. 35cca45.

  • An experimental clang-format option was added that supports removing braces for single-line control statements, in line with the LLVM style guide. 533fbae.

  • Clang can now link SPIR-V objects using spirv-link. dbb8d08.

  • Support was added for disabling warnings from macros defined in a system header. c4db521.

  • The -fsanitize-address-param-retval argument was added, which enables detection of uninitialised parameters and return values using MemorySanitizer. a0458b5.

Other project commits

  • BOLT (Binary Optimization and Layout Tool) was merged into the LLVM monorepo. 4c106cf.

  • The documentation on how to build flang was fixed/updated. c0add16.

  • The IBT (Indirect Branch Tracking) feature from Intel’s CET (Control-flow Enforcement Technology) can now been enabled for the compiler-rt builtins library. 6fab274.

  • LLVM’s libc gained an implementation of log2f and an AArch64 Linux syscall implementation (initially used for mmap and munmap). 63d2df0, 371779f.

  • ranges::in_in_result, ranges::owning_view, ranges::cdata, ranges::{construct_at,destroy,destroy_at}, ranges::uninitialized_copy{,n}, and ranges::uninitialized_move{,n} were implemented. d3729bb, 67151d0, 483f7f5, b9bc3c1, 8d23b74.

  • Global state was removed from lldCommon. f860fe3.