LLVM Weekly - #264, January 21st 2019

Welcome to the two hundred and sixty-fourth 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

The new license and developer policy is now in place. The new license is now in place and all subsequent contributions to LLVM must be under this license. The license for the LLVM-8 branch remains unchanged. See the message for more information. Massive thanks are due to everyone involved.

LLVM 8.0.0 has been branched. Trunk is now 9.0.0. 8.0.0 final is scheduled for Feb 27th.

Trail of Bits have an incredibly in-depth blog post on how McSema handles C++ exceptions. As background, this includes a great description of how C++ exceptions work.

On the mailing lists

Manman Ren has written an RFC on generating order files for linker optimisation. The RFC describes an approach to log the execution order of functions, which can be used to reduce application startup time.

JF Bastien proposes a new toolchain update policy. "It's a new year, so let's try a new approach in getting LLVM’s codebase past C++11. Instead of discussing toolchain versions and whether C++14 or 17 is best, let's just focus on one baby step: agreeing on a policy. This policy will be used to update our toolchain, hopefully warning people in LLVM 8 and actually moving past C++11 for LLVM 9." So far, there seems to be agreement on this step forwards.

Yitzhak Mandelbaum now has a patch to accompany his RFC on improving source-to-source transformations with clang.

Kostya Serebryany has shared numbers for the overhead of automatic variable initialisation on a large internal benchmark.

Anton Korobeynikov is soliciting project ideas for GSoC 2019.

Chandler Carruth proposes renaming .TXT files to .txt. There are no major objections, though some concerns about how well git/svn handle this on case insensitive filesystems.

Ilya Biryukov started a new discussion on improving/replacing the LLVM bug tracking workflow. James Y Knight suggests that discussions of moving issue tracking to GitHub are likely premature and that there may be some straight-forward improvements that can be made to bugzilla.

Kevin Neal is seeking input from LLVM language frontend maintainers (e.g. flang, Rust, Swift, Julia, ...). He is adding IRBuilder APIs for constrained fadd and similar intrinsics and would like to ensure they meet the needs of other frontend devs.

Frej Drejhammar started an RFC thread on adding support for explicitly specifying calling convention details on-the-fly in LLVM IR. Chris Lattner suggests this would be a good topic for a round table at EuroLLVM.

Juneyoung Lee proposes adding new pointer manipulation intrinsics in order to reduce the number of ptrtoint/inttoptr casts genereated by LLVM passes.

Dylan McKay shared a status update of the AVR backend.

Kostya Kortchinsky shares plans for the Scudo secure allocator to remain in the compiler-rt library, but made more standalone (i.e. no sanitizer_common dependency).

LLVM commits

The new LLVM license structure and developer policy has been introduced. r351631.

The getting started guide was updated to recommend the use of git over SVN. r351130.

The Nios2 backend was removed. r351231.

no-frame-pointer-* IR function attributes were replaced with frame-pointer . r351049.

A gn.py wrapper script was committed that adds --dotfile= and --root= parameters. This is an alternative to moving the .gn file to the toplevel. r351064.

As part of the ongoing move towards opaque pointer types, various IR APIs were updated. r351121, r351122, r351123, r351124.

Codegen support for the RV64A, atomics for RISC-V 64-bit was added. This completes support for atomics lowering in accordance with the RISC-V memory model, for 32- and 64-bit targets. r351422.

Floating point types can now be used in atomicrmw xchg . r351427.

Demangling support was added to llvm-readobj. r351450.

The AbstractCallSite interface was introduced, acting as a unified interface between (in)direct and callback calls. r351627, r351628.

Clang commits

A new attribute was added to opt specific functions out of speculative load hardening. r351565.

clangd gained an XPC transport layer for macOS. r351280.

The UBSan alignment check learned to sanitizer assume_aligned-like attributes. r351177.

Clang now has an MSP430 toolchain description. r351228.

Other project commits