skip to main content
10.1145/1863523.1863539acmconferencesArticle/Chapter ViewAbstractPublication PagesicfpConference Proceedingsconference-collections
research-article

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

Published:30 September 2010Publication History

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

mov

134.7 MB

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
      • Published in

        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
        • 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

        Copyright © 2010 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 30 September 2010

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Author Tags

        Qualifiers

        • research-article

        Acceptance Rates

        Overall Acceptance Rate57of143submissions,40%

        Upcoming Conference

        ICFP '24

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader