Alex Bradbury via llvm-dev
2015-Nov-09 14:17 UTC
[llvm-dev] LLVM Weekly - #97, Nov 9th 2015
LLVM Weekly - #97, Nov 9th 2015 ============================== If you prefer, you can read a HTML version of this email at <http://llvmweekly.org/issue/97>. Welcome to the ninety-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](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 A number of slide decks have started appearing from last week's LLVM Dev Meeting. The first set of videos made a brief appearance [here](https://www.youtube.com/playlist?list=PL_R5A0lGi1AA4Lv2bBFSwhgDaHvvpVU21) but apparently they weren't ready for distribution and have been taken down again. In the mean time, you might be interested in the slides for: [Living downstream without drowning](http://llvm.org/devmtg/2015-10/slides/RobinsonEdwards-LivingDownstreamWithoutDrowning.pdf), [Automated performance tracking of LLVM-generated code](http://llvm.org/devmtg/2015-10/slides/Beyls-AutomatedPerformanceTrackingOfLlvmGeneratedCode.pdf), [opaque pointer types](http://llvm.org/devmtg/2015-10/slides/Blaikie-OpaquePointerTypes.pdf), and [debug info on a diet](http://llvm.org/devmtg/2015-10/slides/Blaikie-DebugInfoOnADiet.pdf). Pyston 0.4 has [been released](http://blog.pyston.org/2015/11/03/102/). It now features a baseline JIT in addition to the LLVM JIT. The LLVM-based ELLCC cross-compilation tool chain has had a [new release, version 0.1.18](http://lists.llvm.org/pipermail/llvm-dev/2015-November/091899.html). This release has been tested for building the Linux kernel. There is going to be an LLVM devroom at FOSDEM 2016. Check [here for the call for papers and participation](http://lists.llvm.org/pipermail/llvm-dev/2015-November/091906.html). The deadline for receiving submissions is December 1st. ## On the mailing lists * As loyal LLVM Weekly readers will know, for a long time now there's been a movement to replace autoconf in the LLVM build system with CMake. It's now at the point where Chris Bieneman suggests we should consider [deprecating autoconf](http://lists.llvm.org/pipermail/llvm-dev/2015-November/092150.html). His proposal suggests it is marked deprecated for the 3.8 release and removed after 3.8 branches from the main development tree. This proposal is getting a lot of positive feedback. * After a discussion about the spotty use of the `DEBUG_TYPE` in passes to prefix debug messages, Daniel Berlin makes the suggestion [that a new `DEBUG_MSG` macro be introduced](http://lists.llvm.org/pipermail/llvm-dev/2015-November/091933.html) which will always include the `DEBUG_TYPE`. Although there are a number of responses indicating how useful they find it when debug messages are prefixed with their source, there doesn't seem to yet be a consensus on whether it's worth replacing all `DEBUG(dbgs() << ..)` with something like this. * George Burgess is [seeking feedback for his proposal on performing nullability analysis in Clang](http://lists.llvm.org/pipermail/cfe-dev/2015-November/045935.html). * Richard Diamond has written a [proposal on introducing an llvm.blackbox intrinsic](http://lists.llvm.org/pipermail/llvm-dev/2015-November/091968.html) with the purpose of explicitly preventing certain optimisations. So far, there's some confusion about exactly what this intrinsic would do, and whether there's an alternative way to achieve the same aims. * James Molloy [proposes adding a new norecruse attribute](http://lists.llvm.org/pipermail/llvm-dev/2015-November/092094.html). With no major exceptions, this has actually already been committed. See the commit summary below for more information. * David Blaikie is planning to implement an llvm-dwp tool to support building a DWARF package file out of a number of .dwo split debug files. He is [seeking feedback](http://lists.llvm.org/pipermail/llvm-dev/2015-November/092035.html) on his plan. * Chris Bieneman has been improving support with the CMake build system for bootstrapping a cross-compiler toolchain and has [run in to issues involving compiler-rt and bootstrapping builtins](http://lists.llvm.org/pipermail/llvm-dev/2015-November/091916.html). There seems to be some support for the third of the proposed options, splitting the builtins and runtime libraries. ## LLVM commits * A new optimisation was added to SimplifyCFG to merge conditional stores. The commit message notes it has little impact on the standard LLVM test suite, but it apparently causes many changes in a third party suite. [r252051](http://reviews.llvm.org/rL252051). * Implicit conversions between ilist iterators and pointers are now disabled. All in-tree code has been updated to use explicit conversions, but out-of-tree developers may need to either revert this patch for now or update their code. [r252380](http://reviews.llvm.org/rL252380). * The LoopLoadElimination pass was introduced, which can discover store-to-load forwarding opportunities. [r251972](http://reviews.llvm.org/rL251972), [r252017](http://reviews.llvm.org/rL252017). * Work on operand bundles continues with the addition of a `data_operand` abstraction. [r252077](http://reviews.llvm.org/rL252077). * LLVM gained portable helper macros for packed struct definitions. [r252099](http://reviews.llvm.org/rL252099). * DebugInfo has been modified so that a reference to a subprogram is stored in function-level metadata rather than subprograms containing a metadata reference to the function they describe. A script to update out-of-tree textual IR is [attached here](http://reviews.llvm.org/D14265). [r252219](http://reviews.llvm.org/rL252219), [r252268](http://reviews.llvm.org/rL252268). * The `norecruse` attribute has been introduced. This indicates the function will never recurse into itself, either directly or indirectly, and can be used to demote global variables to locals. [r252282](http://reviews.llvm.org/rL252282). * The `notail` marker for call instructions was added, which prevents tail or musttail markers being added by the optimizer. [r252368](http://reviews.llvm.org/rL252368). ## Clang commits * The idea of 'module file extensions' has been introduced. These add additional information to a module file that can be queried when it's read, allowing tools built on Clang to stash their own data in module files. See [the original mailing list RFC](http://lists.llvm.org/pipermail/cfe-dev/2015-October/045740.html) for more details. [r251955](http://reviews.llvm.org/rL251955). * Clang now supports the `__make_integer_seq` template. `__make_integer_seq<std::integer_sequence, int, 90000>` takes 0.25 seconds while `std::make_integer_sequence<int, 90000>` takes so long the patch author didn't wait for it to finish. [r252036](http://reviews.llvm.org/rL252036). * The newly-introduced VforkChecker will look for unsafe code in a vforked process. [r252285](http://reviews.llvm.org/rL252285). ## Other project commits * LLDB gained an initial Go expression parser. [r251820](http://reviews.llvm.org/rL251820). * compiler-rt now supports 32-bit mingw-w64. [r251928](http://reviews.llvm.org/rL251928). * Some initial documentation has been written on [adding programming language support to LLDB](http://lldb.llvm.org/adding-language-support.html). [r251831](http://reviews.llvm.org/rL251831). * LLDB should now be able to directly launch processors on the iOS simulator. [r252112](http://reviews.llvm.org/rL252112).