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.
Article PDF
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.Avoid common mistakes on your manuscript.
REFERENCES
The GNU Project, GCC Releases, http://www.gnu.org/software/gcc/releases.html.
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).
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).
C. Polychronopoulos, The PROMIS Compiler Web Page, http://promis.csrd.uiuc.edu/.
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).
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).
A. Aho, R. Sethi, and J. Ullman, Compilers: Principles, Techniques, and Tools, Addison Wesley (1986).
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).
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).
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).
L. G. Jones, Efficient Evaluation of Circular Attribute Grammars, ACM Transactions on Programming Languages and Systems (TOPLAS), 12(3):429–462 (1990).
A. Carle and L. Pollock,Modular specification of Incremental Program Transformation Systems, Proceedings of the 11th International Conference on Software Engineering(1997).
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.
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).
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).
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).
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).
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).
T. Marlowe and B. Ryder, Hybrid Incremental Alias Algorithms, Proceedings of the Twentyfourth Hawaii International Conference on System Sciences(1991).
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).
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).
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).
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.
S. Lerner, D. Grove, and C. Chambers, Composing Dataflow Analyses and Transformations, Proceedings of the Conference on Principles of Programming Languages,ACM, NY (2002).
Rights 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
Issue Date:
DOI: https://doi.org/10.1023/B:IJPP.0000035816.93295.68