Reducing the cost of data flow analysis by congruence partitioning

  • Evelyn Duesterwald
  • Rajiv Gupta
  • Mary Lou Soffa
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 786)


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.


Congruence Relation Congruence Class Control Flow Graph Initial Partition Root Vertex 
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.


  1. [AHU74]
    A.V. Aho, J.E. Hopcroft, and J.D. Ullman. The Design and Analysis of Computer Algorithms. Addison-Wesley, 1974.Google Scholar
  2. [ASU86]
    A.V. Aho, R. Sethi, and J.D. Ullman. Compilers, principles, techniques, and tools. Addison-Wesley Publishing Company, Massachusetts, 1986.Google Scholar
  3. [AWZ88]
    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.Google Scholar
  4. [CC77]
    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.Google Scholar
  5. [CCF90]
    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.Google Scholar
  6. [CF93]
    R.K. Cytron and J. Ferrante. Efficiently computing φ-nodes on-the-fly. Proc. 1993 Workshop on Languages and Compilers for Parallelism, 1993.Google Scholar
  7. [CFR+91]
    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.CrossRefGoogle Scholar
  8. [CLZ86]
    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.Google Scholar
  9. [CM80]
    J. Cocke and P.W. Markstein. Measurement of program improvement algorithms. In Proc. Information Processing 80. North Holland Publishing Company, 1980.Google Scholar
  10. [CS70]
    J. Cocke and J.T. Schwartz. Programming languages and their compilers; preliminary notes. Courant Institute of Mathematical Sciences, New York University, April 1970.Google Scholar
  11. [DST80]
    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.CrossRefGoogle Scholar
  12. [GJ79]
    M.R. Garey and D.S. Johnson. Computers and Intractability. Freeman and Company, New York, 1979.Google Scholar
  13. [Hop71]
    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.Google Scholar
  14. [JP93]
    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.Google Scholar
  15. [KU77]
    J.B. Kam and J.D. Ullman. Monotone data flow analysis frameworks. Acta Informatica, 7(3):305–317, July 1977.CrossRefGoogle Scholar
  16. [Lan92]
    W.A. Landi. Interprocedural aliasing in the presence of pointers. PhD thesis, Rutgers University, New Brunswick, New Jersey, 1992.Google Scholar
  17. [NO80]
    G. Nelson and D.C. Oppen. Fast decision procedures based on congruence closures. Journal of the ACM, 27(2), April 1980.Google Scholar
  18. [RL77]
    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.Google Scholar
  19. [RT82]
    J. Reif and R.E. Tarjan. Symbolic program analysis in almost linear time. SIAM Journal of Computing, 11(1):81–93, February 1982.CrossRefGoogle Scholar
  20. [RWZ88]
    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.Google Scholar
  21. [SS70]
    R.M. Shapiro and H. Saint. The representation of algorithms. Technical Report CA-7002-1432, Massachusetts Computer Associates, 1970.Google Scholar
  22. [WZ85]
    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.Google Scholar
  23. [Zad84]
    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.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1994

Authors and Affiliations

  • Evelyn Duesterwald
    • 1
  • Rajiv Gupta
    • 1
  • Mary Lou Soffa
    • 1
  1. 1.Department of Computer ScienceUniversity of PittsburghPittsburgh

Personalised recommendations