LLVM Weekly - #10, Mar 10th 2014

Welcome to the tenth 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.

This week the book I authored in collaboration with Ben Everard, Learning Python with Raspberry Pi (Amazon US) is officially released.

News and articles from around the web

John Regehr has written a blog post detailing some ideas for implementing a superoptimizer for LLVM. There's some good stuff in the comments too.

Version 2.1 of the Capstone disassembly framework has been released. Library size is about 40% smaller, memory usage is down 40% and there are performance improvements as well.

Facebook have released Chisel, a collection of LLDB commands to assist debugging iOS apps.

A fork of vim-lldb, the LLDB plugin for Vim included in the lldb repo has appeared. Changes so far have been relatively minor.

On the mailing lists

LLVM commits

A new implementation of PBQP (partitioned boolean quadratic programming)-based register allocator landed. r202735. The original commit (r202551) message details the changes, including massively reduced memory consumption. Average memory reduction is claimed to be 400x. The tagline is "PBQP: No longer feasting upon every last byte of your RAM".

AArch64 gained a machine description for Cortex-A53, which involved giving all non-NEON instructions scheduling annotations. r203125. REVERTED

The SPARC backend gained support for the VIS SIMD instruction set extensions. r202660

A whole bunch of classes moved around, with the intention that LLVM's support library will work when building with C++ modules. r202814 and many others. InstIterator, GetElementPtrTypeIterator, CallSite, PatternMatch, ValueHandle, ValueMap, CFG, ConstantFolder, NoFolder, PredIteratorCache, ConstantRange, PassNameParser, and LeakDetector moved from Support to IR.

The PROLOG_LABEL TargetOpcode was replaced with CFI_INSTRUCTION which is intended to have simpler semantics and be less convoluted to use. See the commit message for more details. r203204.

Uses of OwningPtr<T> were replaced with std::unique_ptr<T> . r203083.

The inalloca grammar was cleaned up. r203376.

Clang commits

The PGO (profile-guided optimisation) code got some minor refactoring in preparation for handling non-C/C++ code, and initial suport for Objective-C blocks. r203073, r203157.

Module dependences are now included in the dependency files created by -MD/-MMD etc. r203208.

The -Wunreachable-code option no longer warns about dead code guarded by a configuration value. r202912.

The MSVC mangling scheme is not used for statics or types which aren't visible. r202951.

Other project commits