LLVM Weekly - #285, June 17th 2019

Welcome to the two hundred and eighty-fifth 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

LLVM 8.0.1-rc2 has been tagged.

The 7th HelloLLVM/HelloGCC social in China will take place on June 22 in Shanghai.

The OpenMandriva Lx 4.0 Linux distribution has been released. Notably, this distribution is (mostly) compiled with Clang/LLVM.

On the mailing lists

Eli Friedman shares a proposed change to the IR semantics: that constant expressions should never have undefined behaviour. Chris Lattner wonders if anyone might be interested in removing all trapping operators for constants.

Much more discussion was generated on the proposal to prefer 'int' for regular arithmetic - too much for me to reasonably summarise, but you might want to check out Chandler Carruth's response.

Jessica Paquette shared an RFC on an optimisation remarks based code size analysis tool

Francesco Petrogalli has rewritten his proposal for interfacing user-provided vector functions.

Nicolai Hähnle-Montoro is seeking feedback on expressing preserved-relations between passes from different modules.

Qing Shan Zhang has written patches to allow scheduling state to be forwarded across machine basic blocks (where there is a single predecessor) and is looking for reviews.

LLVM commits

The ValueTracking analysis gained a helpful clarifying comment, explaining that branching off poison isn't undefined behaviour, but executing a side effecting instruction following that branch would be. The LangRef was also expanded with new clarifications on poison. r363318, r363320.

MachineBlockPlacement learnt to move a latch block with conditional exit and multiple predecessors to the top of the loop. r363471.

MC layer support was added for the new non-MVE Arm v8.1-M instructions. r363059.

The semantics for fadd/fmul vector reductions were changed. r363035.

The RISC-V backend gained support for lowering I,J,K inline asm constraints and for PIC addressing sequences. r363054, r363058.

The AArch64 backend now merges globals by default when optimising for size. r363130.

The RISC-V, Mips, and SystemZ backends can now be build using the gn build system.r363154, r363159, r363170.

Clang commits

The SSE2 intrinsics were ported to PowerPC using Altivec. r363122.

Lexing, parsing, and basic semantics were aded for the C++20 consteval specifier. r363362.

Other project commits