For full conference details, please visit the 2018 European LLVM Developers’ Meeting website.
Back To Schedule
Tuesday, April 17 • 9:45am - 10:25am
LLVM Greedy Register Allocator – Improving Region Split Decisions

Sign up or log in to save this to your schedule, view media, leave feedback and see who's attending!

LLVM Code Generation provides several alternative passes for performing register allocation. Most of the LLVM in-tree targets use the Greedy Register Allocator, which was introduced in 2011. An overview of this allocator was presented by Jakob Olesen at the LLVM Developers' Meeting of that year (*). This allocator relies on splitting live ranges of variables in order to cope with excessive co-existing registers. In this technique a live range is split into two or more smaller subranges, where each subrange can be assigned a different register or be spilled.

This talk revisits the Greedy Register Allocator available in current LLVM, focusing on its live range region splitting mechanism. We show how this mechanism chooses to split live ranges, examine a couple of cases exposing suboptimal split decisions, and present recent contributions along with their performance impact. More details can be found in the patches and their reviews (**).

(*) https://llvm.org/devmtg/2011-11/#talk6 (**) https://reviews.llvm.org/rL316295, https://reviews.llvm.org/rL323870


Tuesday April 17, 2018 9:45am - 10:25am BST
Bristol 2