Hoopl: A Modular, Reusable Library for Dataflow Analysis and Transformation
Dataflow analysis and transformation of control-flow graphs is
pervasive in optimizing compilers, but it is typically
entangled with the details of a particular compiler.
We describe Hoopl, a reusable library that makes it
unusually easy to define new analyses and
transformations for any compiler written in Haskell.
Hoopl's interface is modular and polymorphic,
and it offers unusually strong static guarantees.
The implementation encapsulates
state-of-the-art algorithms (interleaved analysis and rewriting,
dynamic error isolation), and it cleanly separates their tricky elements
so that they can be understood independently.
The paper is available as
US Letter PDF (212K),
US Letter PostScript (322K),
US Letter TeX DVI (217K).