Optimizing with persistent data structures (LLVM Cauldron 2016)
Channel: Igalia
Date: 13/09/2016

By Andy Wingo.

Slides at http://www.slideshare.net/igalia/optimizing-with-persistent-data-structures-llvm-cauldron-2016

Is there life beyond phi variables and basic blocks? Andy will report on his experience using a new intermediate representation for compiler middle-ends, "CPS soup". The CPS soup language represents programs using Clojure-inspired maps, allowing optimizations to be neatly expressed as functions from one graph to another. Using these persistent data structures also means that the source program doesn't change while the residual program is being created, eliminating one class of problems that the optimizer writer has to keep in mind. Together we will look at some example transformations from an expressiveness as well as a performance point of view, and we will also cover some advantages which a traditional SSA graph maintains over CPS soup.