skip to main content
research-article

Hoopl: a modular, reusable library for dataflow analysis and transformation

Published:30 September 2010Publication History
Skip Abstract Section

Abstract

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.

Skip Supplemental Material Section

Supplemental Material

haskell-1555-peytonjones.mov

References

  1. }}Andrew W. Appel. 1998. Modern Compiler Implementation. Cambridge University Press, Cambridge, UK. Available in three editions: C, Java, and ML. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. }}John Cocke and Ken Kennedy. 1977. An algorithm for reduction of operator strength. Communications of the ACM, 20(11): 850--856. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. }}Keith D. Cooper, Timothy J. Harvey, and Ken Kennedy. 2001. A simple, fast dominance algorithm. Technical report, Rice University. Unpublished report available from http://www.hipersoft.rice.edu/grads/publications/dom14.pdf.Google ScholarGoogle Scholar
  4. }}Patrick Cousot and Radhia Cousot. 1977 (January). Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Conference Record of the 4th ACM Symposium on Principles of Programming Languages, pages 238--252. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. }}Patrick Cousot and Radhia Cousot. 1979 (January). Systematic design of program analysis frameworks. In Conference Record of the 6th Annual ACM Symposium on Principles of Programming Languages, pages 269--282. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. }}John B. Kam and Jeffrey D. Ullman. 1976. Global data flow analysis and iterative algorithms. Journal of the ACM, 23(1):158--171. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. }}John B. Kam and Jeffrey D. Ullman. 1977. Monotone data flow analysis frameworks. Acta Informatica, 7:305--317.Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. }}Gary A. Kildall. 1973 (October). A unified approach to global program optimization. In Conference Record of the ACM Symposium on Principles of Programming Languages, pages 194--206. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. }}Jens Knoop, Oliver Ruething, and Bernhard Steffen. 1992. Lazy code motion. Proceedings of the ACM SIGPLAN '92 Conference on Programming Language Design and Implementation, in SIGPLAN Notices, 27 (7):224--234. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. }}Sorin Lerner, David Grove, and Craig Chambers. 2002 (January). Composing dataflow analyses and transformations. Conference Record of the 29th Annual ACM Symposium on Principles of Programming Languages, in SIGPLAN Notices, 31 (1):270--282. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. }}Thomas J. Marlowe and Barbara G. Ryder. 1990. Properties of data flow frameworks: a unified model. Acta Informatica, 28 (2):121--163. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. }}Steven S. Muchnick. 1997. Advanced compiler design and implementation. Morgan Kaufmann, San Mateo, CA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. }}George C. Necula, Scott McPeak, Shree Prakash Rahul, and Westley Weimer. 2002. CIL: Intermediate language and tools for analysis and transformation of C programs. In CC '02: Proceedings of the 11th International Conference on Compiler Construction, pages 213--228. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. }}Norman Ramsey and João Dias. 2005 (September). An applicative control-flow graph based on Huet's zipper. In ACM SIGPLAN Workshop on ML, pages 101--122.Google ScholarGoogle Scholar
  15. }}Colin Runciman. 2010 (June). Finding and increasing PRS candidates. Reduceron Memo 50, www.cs.york.ac.uk/fp/reduceron.Google ScholarGoogle Scholar
  16. }}David A. Schmidt. 1998. Data flow analysis is model checking of abstract interpretations. In ACM, editor, Conference Record of the 25th Annual ACM Symposium on Principles of Programming Languages, pages 38--48. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. }}Bernhard Steffen. 1991. Data flow analysis as model checking. In TACS '91: Proceedings of the International Conference on Theoretical Aspects of Computer Software, pages 346--365. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. }}Raja Vallée-Rai, Etienne Gagnon, Laurie J. Hendren, Patrick Lam, Patrice Pominville, and Vijay Sundaresan. 2000. Optimizing Java bytecode using the Soot framework: Is it feasible? In CC '00: Proceedings of the 9th International Conference on Compiler Construction, pages 18--34. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. }}David B. Whalley. 1994 (September). Automatic isolation of compiler errors. ACM Transactions on Programming Languages and Systems, 16 (5):1648--1659. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Hoopl: a modular, reusable library for dataflow analysis and transformation

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 45, Issue 11
        HASKELL '10
        November 2010
        156 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/2088456
        Issue’s Table of Contents
        • cover image ACM Conferences
          Haskell '10: Proceedings of the third ACM Haskell symposium on Haskell
          September 2010
          166 pages
          ISBN:9781450302524
          DOI:10.1145/1863523

        Copyright © 2010 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 30 September 2010

        Check for updates

        Author Tags

        Qualifiers

        • research-article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!