Dataflow analysis and transformation of control-flow graphs is
pervasive in optimizing compilers, but it is typically tightly
interwoven with the details of a particular [more]Dataflow analysis and transformation of control-flow graphs is
pervasive in optimizing compilers, but it is typically tightly
interwoven with the details of a particular compiler. We describe
Hoopl, a reusable Haskell library that makes it unusually easy
to define new analyses and transformations for *any* compiler. Hoopl's
interface is modular and polymorphic, and it offers unusually strong
static guarantees. The implementation is also far from routine: it
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.
| |
compilation components and composition
|