LLVM Weekly - #187, Jul 31st 2017

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

OpenBSD has switched to using Clang as the default compiler for amd64 and i386 platforms.

KLEE version 1.4.0 has been released. Amazingly, the KLEE symbolic execution engine seems to have escaped a mention in LLVM Weekly so far. Reminder to anyone building projects built on or relevant to LLVM: dropping me an email about your latest release is always welcome, if you don't email me or llvm-dev there's a good chance I won't see it.

ELLCC has seen a new release, adding full support for shared libraries and a new ellcc helper utility.

LLVM 5.0.0-rc1 has been tagged.

Version 1.2 of the Clazy Clang plugin has been released. This adds a number of new checks for common Qt coding issues, and prebuilt Windows binaries are now available.

On the mailing lists

Alex Lorenz has written an RFC on the initiation of refactoring actions in Clang. This RFC is part of the effort to upstream refactoring features used in XCode 9.

There has been a large amount of follow-on discussion to last week's thread about IR-level interprocedural outlining. For the more recent discussions, Jessica Paquette's response is a good starting point. Some of the commenters observe that if possible, sharing common code between MachineOutliner and this new IR-level outliner would be beneficial.

Ever wanted a summary of register classes in the X86 target? Craig Topper has you covered.

Why is llvm.stacksave() necessary? David Chisnall has the answer in his responses.

LLVM commits

llvm.dbg.value no longer takes an offset parameter. r309426.

LazyValueInfo has been improved by constant-propagating zero extension of a switch condition value through case edges. This reduces code size and performance of the Python 2.7 eval loop by about 5%. r309415.

Development has started on llvm-rc, which aims to provide the core functionality of MS Visual Studio Resource Converter. r308940.

The ARM backend has been updated to use C++11 enum classes for the majority of enums. r309287.

Bitrotted support for aliases in MergeFunctions has been removed. r309313.

Clang commits

The -nostdlib++ flag has been introduced, which disables linking in the C++ standard library. r308997.

The Undefined Behavior Sanitizer (UBSan) learned to detect undefined behaviour in calls to builtins. r309459.

Other project commits