Abstract
Data flow analysis expresses the solution of an information gathering problem as the fixed point of a system of monotone equations. This paper presents a technique to improve the performance of data flow analysis by systematically reducing the size of the equation system in any monotone data flow problem. Reductions result from partitioning the equations in the system according to congruence relations. We present a fast O(n log n) partitioning algorithm, where n is the size of the program, that exploits known algebraic properties in equation systems. From the resulting partition a reduced equation system is constructed that is minimized with respect to the computed congruence relation while still providing the data flow solution at all program points.
Partially supported by National Science Foundation Presidential Young Investigator Award CCR-9157371 and Grant CCR-9109089 to the University of Pittsburgh.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
A.V. Aho, J.E. Hopcroft, and J.D. Ullman. The Design and Analysis of Computer Algorithms. Addison-Wesley, 1974.
A.V. Aho, R. Sethi, and J.D. Ullman. Compilers, principles, techniques, and tools. Addison-Wesley Publishing Company, Massachusetts, 1986.
B. Alpern, M. Wegman, and F.K. Zadeck. Detecting equality of values in programs. In Proc. 15th Annual ACM Symp. on Principles of Programming Languages, pages 1–11, San Diego, California, January 1988.
P. Cousot and R. Cousot. Static determination of dynamic properties of generalized type unions. In Proc. A CM Conf. on Language Design for Reliable Software, pages 77–93, Raleigh, North Carolina, March 1977.
J.D. Choi, R.K. Cytron, and J. Ferrante. Automatic construction of sparse data flow evaluation graphs. In Conf. Rec. 18th Annual ACM Symp. on Principles of Programming Languages, pages 55–66, Orlando, Florida, January 1990.
R.K. Cytron and J. Ferrante. Efficiently computing φ-nodes on-the-fly. Proc. 1993 Workshop on Languages and Compilers for Parallelism, 1993.
R.K. Cytron, J. Ferrante, B. Rosen, M. Wegman, and F.K. Zadeck. Efficiently computing static single assignment form and the control dependence graph. ACM Transactions of Programming Languages and Systems, 13(4):451–490, October 1991.
R.K. Cytron, A. Lowry, and F.K. Zadeck. Code motion of control structures in high-level languages. In Conf. Rec. 13th Annual ACM Symp. on Principles of Programming Languages, pages 70–85, St. Petersburg Beach, Florida, January 1986.
J. Cocke and P.W. Markstein. Measurement of program improvement algorithms. In Proc. Information Processing 80. North Holland Publishing Company, 1980.
J. Cocke and J.T. Schwartz. Programming languages and their compilers; preliminary notes. Courant Institute of Mathematical Sciences, New York University, April 1970.
P.J. Downey, R. Sethi, and R.E. Tarjan. Variations on the common subexpression problem. Journal of the ACM, 27(4):758–771, October 1980.
M.R. Garey and D.S. Johnson. Computers and Intractability. Freeman and Company, New York, 1979.
J.E. Hopcroft. An n log n algorithm for minimizing states in finite automata. In Theory of Machines and Computations. Academic Press, New York, 1971.
R. Johnson and K. Pingali. Dependence-based program analysis. In Proc. ACM SIGPLAN '93 Conf. on Programming Language Design and Implementation, pages 78–89, Albuquerque, New Mexico, June 1993.
J.B. Kam and J.D. Ullman. Monotone data flow analysis frameworks. Acta Informatica, 7(3):305–317, July 1977.
W.A. Landi. Interprocedural aliasing in the presence of pointers. PhD thesis, Rutgers University, New Brunswick, New Jersey, 1992.
G. Nelson and D.C. Oppen. Fast decision procedures based on congruence closures. Journal of the ACM, 27(2), April 1980.
J. Reif and J. Lewis. Symbolic evaluation and the global value graph. In Conf. Rec. 4th Annual ACM Symp. on Principles of Programming Languages, pages 104–118, January 1977.
J. Reif and R.E. Tarjan. Symbolic program analysis in almost linear time. SIAM Journal of Computing, 11(1):81–93, February 1982.
B. Rosen, M. Wegman, and F.K. Zadeck. Global value numbers and redundant computations. In Conf. Rec. 15th Annual ACM Symp. on Principles of Programming Languages, pages 12–27, San Diego, California, January 1988.
R.M. Shapiro and H. Saint. The representation of algorithms. Technical Report CA-7002-1432, Massachusetts Computer Associates, 1970.
M. Wegman and F.K. Zadeck. Constant propagation with conditional branches. In Conf. Rec. 12th Annual ACM Symp. on Principles of Programming Languages, pages 291–299, New Orleans, Louisiana, January 1985.
F.K. Zadeck. Incremental data flow analysis in a structured program editor. In Proc. ACM SIGPLAN Symp. on Compiler Construction, pages 132–143, June 1984.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1994 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Duesterwald, E., Gupta, R., Soffa, M.L. (1994). Reducing the cost of data flow analysis by congruence partitioning. In: Fritzson, P.A. (eds) Compiler Construction. CC 1994. Lecture Notes in Computer Science, vol 786. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-57877-3_24
Download citation
DOI: https://doi.org/10.1007/3-540-57877-3_24
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-57877-2
Online ISBN: 978-3-540-48371-7
eBook Packages: Springer Book Archive