Skip to main content
Log in

A Framework for Incremental Extensible Compiler Construction

  • Published:
International Journal of Parallel Programming Aims and scope Submit manuscript

Abstract

Extensibility in complex compiler systems goes well beyond modularity of design and it needs to be considered from the early stages of the design, especially the design of the Intermediate Representation. One of the primary barriers to compiler pass extensibility and modularity is interference between passes caused by transformations that invalidate existing analysis information. In this paper, we also present a callback system which is provided to automatically track changes to the compiler’s internal representation (IR) allowing full pass reordering and an easy-to-use interface for developing lazy update incremental analysis passes. We present a new algorithm for incremental interprocedural data flow analysis and demonstrate the benefits of our design framework and our prototype compiler system. It is shown that compilation time for multiple data flow analysis algorithms can be cut in half by incrementally updating data flow analysis.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

REFERENCES

  1. The GNU Project, GCC Releases, http://www.gnu.org/software/gcc/releases.html.

  2. H. Saito, N. Stavrakos, S. Carroll, and C. Polychronopoulos, The Design of the PROMIS Compiler, Compiler Construction Conference, Lecture Notes in Computer Science, 1575:214–228 (1999).

    Google Scholar 

  3. B. G. Ryder, W. Landi, and H. D. Pande, Profiling an Incremental Data Flow Analysis Algorithm, IEEE Transactions on Software Engineering, 16(2):129–140 (1990).

    Google Scholar 

  4. C. Polychronopoulos, The PROMIS Compiler Web Page, http://promis.csrd.uiuc.edu/.

  5. R. Wilson, R. French, C. Wilson, S. Amarasinghe, J. Anderson, S. Tjiang, S. Liao, C. Tseng, M. Hall, M. Lam, and J. Hennessy, The SUIF Compiler System: A Parallelizing and Optimizing Research Compiler, Technical Report CSL-TR-94-620, Stanford University, Stanford, CA (May 1994).

    Google Scholar 

  6. M. Girkar and C. D. Polychronopoulos,The Hierarchical Task Graph as a Universal Intermediate Representation, International Journal of Parallel Programming, 22(5):519–551 (October 1994).

    Google Scholar 

  7. A. Aho, R. Sethi, and J. Ullman, Compilers: Principles, Techniques, and Tools, Addison Wesley (1986).

  8. R. S. Sundaresh and P. Hudak, Incremental Computation via Partial Evaluation, Eighteenth Annual ACM Symposium on Principles of Programming Languages, Orlando, Florida, pp. 1–13, New York: ACM (1991).

    Google Scholar 

  9. G. Ramalingam and T. Reps, A Categorized Bibliography on Incremental Computation, Conference record of the Twentieth Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Charleston, South Carolina, pp. 502–510 (1993).

  10. T. Reps, T. Teitelbaum, and A. Demers, Incremental Context-dependent Analysis for Language-Based Editors, ACM Transactions on Programming Languages and Systems, 5(3):449–477 (July 1983).

    Google Scholar 

  11. L. G. Jones, Efficient Evaluation of Circular Attribute Grammars, ACM Transactions on Programming Languages and Systems (TOPLAS), 12(3):429–462 (1990).

    Google Scholar 

  12. A. Carle and L. Pollock,Modular specification of Incremental Program Transformation Systems, Proceedings of the 11th International Conference on Software Engineering(1997).

  13. The National Compiler Infrastructure Project, The National Compiler Infrastructure Project, http://www.suif.stanford.edu/suif/NCI (January 1998), also at http://www.cs.virginia. edu/nci.

  14. D. Soroker, M. Karasick, J. Barton, and D. Streeter, Extension Mechanisms in Montana, Proceedings of the 8th IEEE Israeli Conference on Software and Systems(1997).

  15. Z. Tan and K. A. Lemone, A Research Environment for Incremental Data Flow Analysis, Proceedings of the 1985 ACM Thirteenth Annual Conference on Computer Science, pp. 356–362, ACM Press, NY (1985).

    Google Scholar 

  16. L. L. Pollock and M. L. Soffa, Incremental Global Reoptimization of Programs, ACM Transactions on Programming Languages and Systems, 14(2):173–200 (April 1992).

    Google Scholar 

  17. B. G. Ryder and M. C. Paull, Incremental Data-flow Analysis Algorithms, ACM Transactions on Programming Languages and Systems, 10(1):1–50 (January 1988).

    Google Scholar 

  18. M. G. Burke and B. G. Ryder, A Critical Analysis of Incremental Iterative Data Flow Analysis Algorithms, IEEE Transactions on Software Engineering, 16(7):723–728 (1990).

    Google Scholar 

  19. T. Marlowe and B. Ryder, Hybrid Incremental Alias Algorithms, Proceedings of the Twentyfourth Hawaii International Conference on System Sciences(1991).

  20. M. Carroll and B. Ryder, Incremental Data Flow Update via Attribute and Dominator Updates, ACM SIGPLANSIGACT Symposium on the Principles of Programming Languages, pp. 274–284, ACM Press (1988).

  21. M. Carroll and B. Ryder, Incremental Data Flow Analysis via Dominator and Attribute Update, Proceedings of the Conference on Principles of Programming Languages, IEEE, NY (1997).

    Google Scholar 

  22. J.-S. Yur, B. G. Ryder, and W. Landi, An Incremental Flowand Context-Sensitive Pointer Aliasing Analysis, Proceedings of the 21st International Conference on Software Engineering (ICSE-99), pp. 442–452, ACM Press, NY (May 16-22 1999).

    Google Scholar 

  23. V. C. Sreedhar, G. R. Gao, and Y.-F. Lee, A New Framework for Exhaustive and Incremental Data Flow Analysis Using DJ Graphs, SIGPLAN Conference on Programming Language Design and Implementation, pp. 278–290 (1996), URL citeseer. nj.nec.com/sreedhar95new.html.

  24. S. Lerner, D. Grove, and C. Chambers, Composing Dataflow Analyses and Transformations, Proceedings of the Conference on Principles of Programming Languages,ACM, NY (2002).

    Google Scholar 

Download references

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Carroll, S., Polychronopoulos, C. A Framework for Incremental Extensible Compiler Construction. International Journal of Parallel Programming 32, 289–316 (2004). https://doi.org/10.1023/B:IJPP.0000035816.93295.68

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/B:IJPP.0000035816.93295.68

Navigation