Alex Bradbury via llvm-dev
2016-Feb-01 11:59 UTC
[llvm-dev] LLVM Weekly - #109, Feb 1st 2016
LLVM Weekly - #109, Feb 1st 2016 =============================== If you prefer, you can read a HTML version of this email at <http://llvmweekly.org/issue/109>. Welcome to the one hundred and ninth 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](http://asbradbury.org). 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 at asbradbury.org>, or @llvmweekly or @asbradbury on Twitter. ## News and articles from around the web The GNU Tools Cauldron 2016 has been [announced](https://gcc.gnu.org/ml/gcc/2015-12/msg00160.html) for the 9th-11th of September 2016, in Hebden Bridge, UK. The Sulong project has been [announced](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094713.html). It is an LLVM IR interpreter using the Truffle framework and Graal on the JVM to support JIT compilation. Ehsan Akhgari has posted an [updated on building Firefox with clang-cl](https://ehsanakhgari.org/blog/2016-01-29/building-firefox-with-clang-cl-a-status-update). It is now possible to build a complete Firefox with Clang without using the MSVC fallback once. I've mentioned it down below in the list of notable commits, but it's worth calling out here too: the old autoconf build-system has now been [removed](http://reviews.llvm.org/rL258861) from LLVM. 3.8 will be the last release to include it. Time to switch to CMake if you haven't already. John Regehr gave a talk about undefined behaviour in LLVM at the Paris LLVM meetup, and you can find the slides [here](http://www.cs.utah.edu/~regehr/llvm-ub.pdf). ## On the mailing lists * James Knight has written to the list to get feedback on [approaches to cleaning up Clang's handling of atomics](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094576.html). There seems to be widespread support for the cleanup. James followed up again to [slightly revise his plan](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094702.html). * Matt Arsenault proposes that [all libcalls be canonicalized to intrinsics](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094593.html). All responses so far are in favour. * Ke Bai has shared a proposal on [representing multiple memory scopes in LLVM IR](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094593.html). There hasn't been any feedback yet. * Dmitree Kuvaiskii asks if anyone has implemented [a pass utilizing Intel's new MPX memory protection](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094620.html). The answer appears to be no, and in addition [David](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094627.html) and [Kostya](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094638.html) are sceptical about how worthwhile it would be. * Peter Collingbourne has proposed a new optimisation, [virtual constant propagation](http://lists.llvm.org/pipermail/llvm-dev/2016-January/094600.html). The original motivation was to reduce the overhead added by enabling control-flow integrity in certain Chromium benchmarks. Constants will be devirtualized at LTO time. ## LLVM commits * The autoconf build system for LLVM has been removed. [r258861](http://reviews.llvm.org/rL258861). * The WebAssembly backend gained support for unaligned loads and stores. [r258779](http://reviews.llvm.org/rL258779). * LLVM's MCAsmSreamer will now always use .p2align rather than .align, because .align's behaviour can differ between targets. [r258750](http://reviews.llvm.org/rL258750). * Intrinsic IDs are now looked up by binary search rather than the previous more complex mechanism. This improves the compile time of Function.cpp. [r258774](http://reviews.llvm.org/rL258774). * TargetSelectionDAGInfo has been renamed to SelectionDAGTargetInfo and now lives in CodeGen rather than Target. [r258939](http://reviews.llvm.org/rL258939). * A LoopSimplifyCFG pass was added to canonicalise loops before running through passes such as LoopRotate and LoopUnroll. [r259256](http://reviews.llvm.org/rL259256). ## Clang commits * The clang-cl driver will now warn for unknown arguments rather than erroring, to match the behaviour of MSVC. [r258720](http://reviews.llvm.org/rL258720). * The old autoconf build system was removed from Clang. [r258862](http://reviews.llvm.org/rL258862). * The 'sancov' (SanitizerCoverage) tool gained some documentation. [r259000](http://reviews.llvm.org/rL259000). ## Other project commits * libcxx gained an implementation of `ostream_joiner`. [r259014](http://reviews.llvm.org/rL259014), [r259015](http://reviews.llvm.org/rL259015). * lld gained a new error function which won't cause process exit. The hope is this can be used to provide a gradual path towards lld-as-a-library. [r259069](http://reviews.llvm.org/rL259069). * The lit runner for the LLVM test suite can now be passed `--param=profile=perf` which will cause each test to be run under `perf record`. [r259051](http://reviews.llvm.org/rL259051).