Skip to main content

Practical compile-time analysis

  • Invited Talks
  • Conference paper
  • First Online:
Static Analysis (SAS 1997)

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

Included in the following conference series:

  • 90 Accesses

Abstract

It is generally agreed that there is a difference between practical and impractical compile-time analyses, although there is no consensus on the interpretation of these terms. This extended abstract presents the author's personal opinion of what makes an analysis practical for real-world problems. In the talk summarized in this abstract, practical, scalable compile-time analysis is defined and steps the community needs to take toward developing such analyses are discussed. Examples in interprocedural analysis of C and C++ from the PROLANGS research group are used for illustration.

This research was supported, in part, by funds from NSF grants GER90-2362 and CCR95-01761.

See http://www.prolangs.rutgers.edu

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. F. E. Allen. A basis for program optimization. In Proceedings of 1971 IFIP Congress, pages 385–390. Institute of Electrical and Electronics Engineers, Inc., North Holland Publishing Company, Amsterdam, Holland, 1971.

    Google Scholar 

  2. Michael Burke, Paul Carini, Jong-Dock Choi, and Michael Hind. Flow-insensitive interprocedural alias analysis in the presence of pointers. In Proceedings of the 7th International Workshop on Languages and Compilers for Parallel Computing, pages 234–250. Springer-Verlag, August 1994.

    Google Scholar 

  3. M. Burke. An interval-based approach to exhaustive and incremental interprocedural data flow analysis. ACM Transactions on Programming Languages and Systems, 12(3):341–395, July 1990.

    Google Scholar 

  4. P. Cousot and R. Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixed points. In Conference Record of the Fourth Annual ACM Symposium on Principles of Programming Languages, pages 238–252, January 1977.

    Google Scholar 

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

    Google Scholar 

  6. K. Cooper and K. Kennedy. Efficient computation of flow insensitive interprocedural summary information. In Proceedings of the ACM SIGPLAN Symposium on Compiler Construction, pages 247–258, June 1984. SIGPLAN Notices, Vol 19, No 6.

    Google Scholar 

  7. M. D. Carroll and B. G. Ryder. Incremental data flow analysis via dominator and attribute updates. In Conference Record of the Fifteenth Annual ACM Symposium on Principles of Programming Languages, pages 274–284, January 1988.

    Google Scholar 

  8. Ramkrishna Chatterjee and Barbara G Ryder. Scalable flow-sensitive type inference for statically typed object-oriented languages. Department of Computer Science Technical Report DCS-TR-259, Rutgers University, July 1997.

    Google Scholar 

  9. Evelyn Duesterwald, Rajiv Gupta, and Mary Lou Soffa. Demand-driven computation of interprocedural data flow. In Conference Record of the Twenty-second Annual ACM Symposium on Principles of Programming Languages, January 1995.

    Google Scholar 

  10. Mary Jean Harrold and Greg Rothermel. Separate computation of alias information for reuse. IEEE Transactions on Software Engineering, 22(7), July 1996.

    Google Scholar 

  11. W. Landi and B. G. Ryder. Pointer-induced aliasing: A problem classification. In Conference Record of the Eighteenth Annual ACM Symposium on Principles of Programming Languages, pages 93–103, January 1991.

    Google Scholar 

  12. W. Landi and B. G. Ryder. A safe approximation algorithm for interprocedural pointer aliasing. In Proceedings of the SIGPLAN '92 Conference on Programming Language Design and Implementation, pages 235–248, June 1992.

    Google Scholar 

  13. W. Landi, B. G. Ryder, and S. Zhang. Interprocedural modification side effect analysis with pointer aliasing. In Proceedings of the SIGPLAN '93 Conference on Programming Language Design and Implementation, pages 56–67, June 1993.

    Google Scholar 

  14. W. Landi, B. G. Ryder, S. Zhang, P. Stocks, and R. Altucher. A comparison of flow sensitive and insensitive modification side effects analyses for C systems. Technical report, July 1997. Available as Department of Computer Science Technical Report, Rutgers University, see http://www.prolangs.rutgers.edu.

    Google Scholar 

  15. T. J. Marlowe and B. G. Ryder. An efficient hybrid algorithm for incremental data flow analysis. In Conference Record of the Seventeenth Annual ACM Symposium on Principles of Programming Languages, pages 184–196, January 1990.

    Google Scholar 

  16. T. J. Marlowe and B. G. Ryder. Properties of data flow frameworks: A unified model. Acta Informatica, 28:121–163, 1990.

    Google Scholar 

  17. L. Pollock and M. Soffa. An incremental version of iterative data flow analysis. IEEE Transactions on Software Engineering, 15(12), December 1989.

    Google Scholar 

  18. T. Reps. Solving demand versions of interprocedural analysis problems. In Proceedings of the Fifth International Conference on Compiler Construction, pages 389–403, April 1994. Appeared as Lecture Notes in Computer Science, Vol 786.

    Google Scholar 

  19. 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.

    Google Scholar 

  20. Marc Shapiro and Susan Horwitz. Fast and accurate flow-insensitive points-to analysis. In Conference Record of the Twenty-fourth Annual ACM Symposium on Principles of Programming Languages, pages 1–14, January 1997.

    Google Scholar 

  21. Bjarne Steensgaard. Points-to analysis in almost linear time. In Conference Record of the Twenty-second Annual ACM Symposium on Principles of Programming Languages, pages 32–41, 1995.

    Google Scholar 

  22. Frank Tip. A survey of program slicing technques. Journal of Programming Languages, 3(3):121–189, 1996.

    Google Scholar 

  23. Daniel Weise, Roger F. Crew, Michael Ernst, and Bjarne Steensgaard. Value dependence graphs: Representation without taxation. In Conference Record of the Twenty-first Annual ACM Symposium on Principles of Programming Languages, pages 297–310, 1994.

    Google Scholar 

  24. W. E. Weihl. Interprocedural data flow analysis in the presence of pointers, procedure variables and label variables. In Conference Record of the Seventh Annual ACM Symposium on Principles of Programming Languages, pages 83–94, January 1980.

    Google Scholar 

  25. J. Yur, B. G. Ryder, W. Landi, and P. Stocks. Incremental analysis of side effects for c software systems. In Proceedings of the Fourth International Conference on Software Engineering, pages 422–432, May 1997.

    Google Scholar 

  26. F. K. Zadeck. Incremental data flow analysis in a structured program editor. In Proceedings of the ACM SIGPLAN Symposium on Compiler Construction, pages 132–143, June 1984. SIGPLAN Notices, Vol 19, No 6.

    Google Scholar 

  27. Sean Zhang, Barbara G. Ryder, and William Landi. Program decomposition for pointer aliasing: A step towards practical analyses. In Proceedings of the 4th Symposium on the Foundations of Software Engineering, October 1996.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Pascal Van Hentenryck

Rights and permissions

Reprints and permissions

Copyright information

© 1997 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Ryder, B.G. (1997). Practical compile-time analysis. In: Van Hentenryck, P. (eds) Static Analysis. SAS 1997. Lecture Notes in Computer Science, vol 1302. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0032762

Download citation

  • DOI: https://doi.org/10.1007/BFb0032762

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-63468-3

  • Online ISBN: 978-3-540-69576-9

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics