Skip to main content

Construction of thinned gated single-assignment form

  • Conference paper
  • First Online:
Languages and Compilers for Parallel Computing (LCPC 1993)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 768))

Abstract

Analysis of symbolic expressions benefits from a suitable program representation. We show how to build thinned gated single-assignment (TGSA) form, a value-oriented program representation which is more complete than standard SSA form, defined on all reducible programs, and better for representing symbolic expressions than program dependence graphs or original GSA form. We present practical algorithms for constructing thinned GSA form from the control dependence graph and SSA form. Extensive experiments on large Fortran programs show these methods to take linear time and space in practice. Our implementation of value numbering on TGSA form drives scalar symbolic analysis in the ParaScope programming environment.

This work was supported in part by ARPA contract DABT63-92-C-0038 and NSF Cooperative Agreement No. CCR-9120008. Use of a Sun Microsystems Sparc 10 was provided under NSF Cooperative Agreement No. CDA-8619893. The content of this paper does not necessarily reflect the position or the policy of the Government and no official endorsement should be inferred.

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

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Alfred V. Aho, Ravi I. Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, Reading, MA, second edition, 1986.

    Google Scholar 

  2. J. R. Allen. Dependence Analysis for Subscripted Variables and Its Application to Program Transformations. PhD thesis, Rice University, April 1983.

    Google Scholar 

  3. B. Alpern, M. N. Wegman, and F. K. Zadeck. Detecting equality of variables in programs. In Conference Record of the Fifteenth ACM Symposium on the Principles of Programming Languages, pages 1–11, San Diego, CA, January 1988.

    Google Scholar 

  4. David Bailey, Eric Barszcz, Leonardo Dagum, and Horst Simon. NAS parallel benchmark results. Technical Report RNR-92-002, NASA Ames Research Center, February 1993.

    Google Scholar 

  5. R. Ballance, A. Maccabe, and K. Ottenstein. The Program Dependence Web: a representation supporting control-, data-, and demand-driven interpretation of imperative languages. In Proceedings of the SIGPLAN '90 Conference on Programming Language Design and Implementation, pages 257–271, White Plains, New York, June 1990.

    Google Scholar 

  6. Philip L. Campbell, Ksheerabdhi Krishna, and Robert A. Ballance. Refining and defining the Program Dependence Web. Technical Report TR 93-6, Department of Computer Science, University of New Mexico, 1993.

    Google Scholar 

  7. Robert S. Cartwright and Matthias Felleisen. The semantics of program dependence. In Proceedings of the SIGPLAN '89 Conference on Programming Language Design and Implementation, Portland, Oregon, June 1989.

    Google Scholar 

  8. Jong-Deok Choi, Ron Cytron, and Jeanne Ferrante. Automatic construction of sparse data flow evaluation graphs. In Conference Record of the Eighteenth ACM Symposium on the Principles of Programming Languages, pages 55–66, January 1991.

    Google Scholar 

  9. G. Cybenko, L. Kipp, L. Pointer, and D. Kuck. Supercomputer performance evaluation and the Perfect benchmarks. In Proceedings of the 1990 ACM International Conference on Supercomputing, Amsterdam, The Netherlands, June 1990.

    Google Scholar 

  10. R. Cytron, J. Ferrante, and V. Sarkar. Compact representations for control dependence. In Proceedings of the SIGPLAN '90 Conference on Programming Language Design and Implementation, pages 337–351, White Plains, New York, June 1990.

    Google Scholar 

  11. R. Cytron, J. Ferrante, and V. Sarkar. Experience using control dependence in PTRAN. In D. Gelernter, A. Nicolau, and D. Padua, editors, Languages and Compilers for Parallel Computing. The MIT Press, 1990.

    Google Scholar 

  12. Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, and F. Kenneth Zadeck. Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems, 13(4):451–490, October 1991.

    Article  Google Scholar 

  13. Raja Das, Joel Saltz, and Reinhard von Hanxleden. Slicing analysis and indirect accesses to distributed arrays. In Preliminary Proceedings of the Sixth Workshop on Languages and Compilers for Parallel Computing, Portland, OR, August 1993.

    Google Scholar 

  14. J. Ferrante, K. J. Ottenstein, and J. D. Warren. The program dependence graph and its use in optimization. ACM Transactions on Programming Languages and Systems, 9(3):319–349, July 1987.

    Article  Google Scholar 

  15. John Field. A simple rewriting semantics for realistic imperative programs and its application to program analysis. In Proceedings of the ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation, pages 98–107, San Francisco, California, June 1992.

    Google Scholar 

  16. G. Goff, K. Kennedy, and C. Tseng. Practical dependence testing. In Proceedings of the SIGPLAN '91 Conference on Program Language Design and Implementation, Toronto, Canada, June 1991.

    Google Scholar 

  17. M. R. Haghighat and C. D. Polychronopoulos. Symbolic program analysis and optimization for parallelizing compilers. In Preliminary Proceedings of the Fifth Workshop on Languages and Compilers for Parallel Computing, New Haven, CT, August 1992.

    Google Scholar 

  18. S. Horwitz, J. Prins, and T. Reps. On the adequacy of program dependence graphs for representing programs. In Conference Record of the Fifteenth ACM Symposium on the Principles of Programming Languages, pages 146–157, San Diego, CA, January 1988.

    Google Scholar 

  19. Francois Irigoin. Interprocedural analyses for programming environments. In J. J. Dongarra and B. Tourancheau, editors, Environments and Tools for Parallel Scientific Computing. Elsevier Science Publishers, 1993.

    Google Scholar 

  20. K. Kennedy, K. S. McKinley, and C. Tseng. Analysis and transformation in the ParaScope Editor. In Proceedings of the 1991 ACM International Conference on Supercomputing, Cologne, Germany, June 1991.

    Google Scholar 

  21. T. Lengauer and R. E. Tarjan. A fast algorithm for finding dominators in a flowgraph. ACM Transactions on Programming Languages and Systems, 1:121–141, 1979.

    Article  Google Scholar 

  22. Allan Porterfield. Software Methods for Improvement of Cache Performance on Supercomputer Applications. PhD thesis, Rice University, May 1989. Available as Rice COMP TR88-93.

    Google Scholar 

  23. Rebecca P. Selke. A Semantic Framework for Program Dependence. PhD thesis, Rice University, 1992.

    Google Scholar 

  24. R. E. Tarjan. Testing flow graph reducibility. Journal of Computer and System Sciences, 9:355–365, 1974.

    Google Scholar 

  25. J. Uniejewski. SPEC Benchmark Suite: designed for today's advanced systems. SPEC Newsletter Volume 1, Issue 1, SPEC, Fall 1989.

    Google Scholar 

  26. Michael Wolfe. Beyond induction variables. In Proceedings of the SIGPLAN '92 Conference on Programming Language Design and Implementation, pages 162–174, San Francisco, California, June 1992.

    Google Scholar 

  27. Wuu Yang, Susan Horwitz, and Thomas Reps. Detecting program components with equivalent behaviors. Technical Report 840, Computer Sciences Department, University of Wisconsin-Madison, April 1989.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Utpal Banerjee David Gelernter Alex Nicolau David Padua

Rights and permissions

Reprints and permissions

Copyright information

© 1994 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Havlak, P. (1994). Construction of thinned gated single-assignment form. In: Banerjee, U., Gelernter, D., Nicolau, A., Padua, D. (eds) Languages and Compilers for Parallel Computing. LCPC 1993. Lecture Notes in Computer Science, vol 768. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-57659-2_28

Download citation

  • DOI: https://doi.org/10.1007/3-540-57659-2_28

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-57659-4

  • Online ISBN: 978-3-540-48308-3

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics