Skip to main content

Transformation to Dynamic Single Assignment Using a Simple Data Flow Analysis

  • Conference paper
Programming Languages and Systems (APLAS 2005)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 3780))

Included in the following conference series:

Abstract

This paper presents a novel method to construct a dynamic single assignment (DSA) form of array-intensive, pointer-free C programs (or in any other procedural language). A program in DSA form does not perform any destructive update of scalars and array elements, i.e., each element is written at most once. As DSA makes the dependencies between variable references explicit, it facilitates complex analyses and optimizations of programs. Existing transformations into DSA perform a complex data flow analysis with exponential analysis time and work only for a limited set of input programs. Our method removes irregularities from the data flow by adding copy assignments to the program, and then it can use simple data flow analyses. The DSA transformation presented scales very well with growing program sizes and overcomes a number of important limitations of existing methods. We have implemented the method and it is being used in the context of memory optimization and verification of those optimizations.

Research supported by FWO Vlaanderen

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Aho, A.V., Sethi, R., Ullman, J.D.: Compilers: Principles, Techniques and Tools. Addison-Wesley, Inc., Reading (1986)

    Google Scholar 

  2. Alias, C.: f2sare (2003), http://www.prism.uvsq.fr/users/ca/progs/f2sare.tgz

  3. Ballance, R.A., Maccabe, A.B., Ottenstein, K.J.: The program dependence web: A representation supporting control-, and demand-driven interpretation of imperative languages. In: Proceedings of PLDI 1990, pp. 257–271 (1990)

    Google Scholar 

  4. Bu, J., Deprettere, E.: Converting sequential interative algorithms to recurrent equations for automatic design of systolic arrays. In: Proceedings of ICASSP 1988, vol. IV, pp. 2025–2028. IEEE Press, Los Alamitos (1988)

    Google Scholar 

  5. Catthoor, F., Wuytack, S., De Greef, E., Balasa, F., Nachtergaele, L., Vandecappelle, A.: Custom Memory Management Methodology: Exploration of Memory Organisation for Embedded Multimedia System Design. Kluwer Academic Publishers, Dordrecht (1998)

    MATH  Google Scholar 

  6. Cytron, R., Ferrante, J., Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems 13(4), 451–490 (1991)

    Article  Google Scholar 

  7. Feautrier, P.: Array expansion. In: Proceedings of the Second International Conference on Supercomputing, St. Malo, France, pp. 429–441 (1988)

    Google Scholar 

  8. Genin, D., Hilfinger, P.: Silage Reference Manual, Draft 1.0. Silvar-Lisco, Leuven (1989)

    Google Scholar 

  9. Karp, R., Miller, R., Winograd, S.: The organization of computations for uniform recurrence equations. Journal of the ACM 14, 563–590 (1967)

    Article  MATH  MathSciNet  Google Scholar 

  10. Kienhuis, B.: Matparser: An array dataflow analysis compiler. Technical report, University of California, Berkeley (February 2000)

    Google Scholar 

  11. Knobe, K., Sarkar, V.: Array SSA form and its use in parallelization. In: Symposium on Principles of Programming Languages, pp. 107–120 (1998)

    Google Scholar 

  12. Li, Z.: Array privatization for parallel execution of loops. In: ICS 1992: Proceedings of the 6th international conference on Supercomputing, pp. 313–322. ACM Press, New York (1992)

    Chapter  Google Scholar 

  13. Offner, C., Knobe, K.: Weak dynamic single assignment form. Technical Report HPL-2003-169, HP Labs (August 2003)

    Google Scholar 

  14. Pugh, W.: The Omega test: A fast and practical integer programming algorithm for dependence analysis. In: Proceedings of Supercomputing 1991, Albuquerque, NM (1991)

    Google Scholar 

  15. Quilleré, F., Rajopadhye, S.: Optimizing memory usage in the polyhedral model. ACM Transactions on Programming Languages 22(5), 773–815 (2000)

    Article  Google Scholar 

  16. Quinton, P.: Automatic synthesis of systolic arrays from uniform recurrent equations. In: ISCA 1984: Proceedings of the 11th annual International Symposium on Computer Architecture, pp. 208–214. ACM Press, New York (1984)

    Chapter  Google Scholar 

  17. Scholz, S.-B.: Single Assignment C - Functional Programming Using Imperative style. In: Proceedings of the 6th International Workshop on Implementation of Functional Languages (IFL 1994), pp. 21.1–21.13 (1994)

    Google Scholar 

  18. Schrijver, A.: Theory of Integer and Linear Programming. John Wiley and Sons, Chichester (1986)

    MATH  Google Scholar 

  19. Shashidhar, K., Bruynooghe, M., Catthoor, F., Janssens, G.: An automatic verification technique for loop and data reuse transformations based on geometric modeling of programs. Journal of Universal Computer Science 9(3), 248–269 (2003)

    Google Scholar 

  20. Shashidhar, K., Bruynooghe, M., Catthoor, F., Janssens, G.: Automatic verification of source code transformations on array-intensive programs: demonstration with real-life examples. Technical Report CW 401, Department of Computer Science, Katholieke Universiteit Leuven, Belgium (2005) (In preparation)

    Google Scholar 

  21. Shashidhar, K., Bruynooghe, M., Catthoor, F., Janssens, G.: Verification of Source Code Transformations by Program Equivalence Checking. In: Bodik, R. (ed.) CC 2005. LNCS, vol. 3443, pp. 221–236. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  22. Vanbroekhoven, P., Janssens, G., Bruynooghe, M., Corporaal, H., Catthoor, F.: Advanced copy propagation for arrays. In: Languages, Compilers, and Tools for Embedded Systems LCTES 2003, June 2003, pp. 24–33 (2003)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2005 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Vanbroekhoven, P., Janssens, G., Bruynooghe, M., Catthoor, F. (2005). Transformation to Dynamic Single Assignment Using a Simple Data Flow Analysis. In: Yi, K. (eds) Programming Languages and Systems. APLAS 2005. Lecture Notes in Computer Science, vol 3780. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11575467_22

Download citation

  • DOI: https://doi.org/10.1007/11575467_22

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-29735-2

  • Online ISBN: 978-3-540-32247-4

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics