skip to main content
article
Free Access

Efficient points-to analysis for whole-program analysis

Published:01 October 1999Publication History
Skip Abstract Section

Abstract

To function on programs written in languages such as C that make extensive use of pointers, automated software engineering tools require safe alias information. Existing alias-analysis techniques that are sufficiently efficient for analysis on large software systems may provide alias information that is too imprecise for tools that use it: the imprecision of the alias information may (1) reduce the precision of the information provided by the tools and (2) increase the cost of the tools. This paper presents a flow-insensitive, context-sensitive points-to analysis algorithm that computes alias information that is almost as precise as that computed by Andersen's algorithm — the most precise flow- and context-insensitive algorithm — and almost as efficient as Steensgaard's algorithm — the most efficient flow- and context-insensitive algorithm. Our empirical studies show that our algorithm scales to large programs better than Andersen's algorithm and show that flow-insensitive alias analysis algorithms, such as our algorithm and Andersen's algorithm, can compute alias information that is close in precision to that computed by the more expensive flow- and context-sensitive alias analysis algorithms.

References

  1. 1 L.O. Andersen. Program analysis and specialization for the C programming language. Technical Report 94-19, University of Copenhagen, 1994.Google ScholarGoogle Scholar
  2. 2 D. Atkinson and W. Griswold. Effective whole-program analysis in the presence of pointers. In Proceedings of the Sixth ACM SIGSOFT Symposium on the Foundation of Software Engineering, pages 46-55, November 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. 3 M. Burke, P. Carini, J. D. Choi, and M. Hind. Flow-insensitive interprocedrual alias analysis in the presence of pointers. In Language and Compilers for Parallel Computing: Proceedings of the 7th International Workshop, pages 234-250, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. 4 Ramkrishna Chatterjee, Barbara G. Ryder, and William A. Landi. Relevant context inference. In Proceedings of 26th ACM SIGACT/SIGPLAN Symposium on PrincipEes of Programming Languages, January 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. 5 M. Emami, R. Ghiya, and L. J. Hendren. Context-sensitive interprocedural pointsto analysis in the presence of function pointers. In Proceedings of SIGPLAN '94 Conference on Programming Language Design and Implementation, pages 242-256, June 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. 6 Programming Languages Research Group. PROLANGS Analysis Framework. http://www.prolangs.rutgers.edu/, Rutgers University, 1998.Google ScholarGoogle Scholar
  7. 7 M. J. Harrold and N. Ci. Reuse-driven interprocedural slicing. In The 20th International Conference on Software Engineering, pages 74-83, April 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. 8 M. J. Harrold and G Rothermel. Separate computation of alias information for reuse. IEEE Transactions on Software Engineering, 22(7):107-120, June 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. 9 M. J. Harrold and M. L. Soffa. Efficient computation of interprocedural definition-use chains. ACM Transactions on Programming Languages and Systems, 16(2):175-204, March 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. 10 S. Horwitz, T. Reps, and D. Binkley. Interprocedural slicing using dependence graphs. AGM nansactions on Programming Languages and Systems, 12(1):26-60, January 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. 11 W. Landi and B. G. Ryder. A safe approximate algorithm for interprocedural pointer aliasing. In Proceedings of 1992 ACM Symposium on Programming Language Design and Implementation, pages 235-248, June 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. 12 D. Liang and M. J. Harrold. Context-sensitive, procedure-specific points-to analysis. Technical Report OSU-CISRC-3/99-TR05, The Ohio State University, March 1999.Google ScholarGoogle Scholar
  13. 13 M. Shapiro and S. Horwitz. The effects of the precision of pointer analysis. In Static Analysis 4th International Symposium, SAS '97, Lecture Notes in Computer Science Vol 1302, pages 16-34, September 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. 14 M. Shapiro and S. Horwitz. Fast and accurate flow-insensitive points-to analysis. In Conference Record of the 24th ACM Symposium on Principles of Programming Languages, pages 1-14, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. 15 B. Steensgaard. Points-to analysis by type inference of programs with structures and unions. In Proc. of the Int. Conf. on Compiler Construction, pages 136-150, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. 16 B. Steensgaard. Points-to analysis in almost linear time. In Conference Record of the 23rd ACM Symposium on PrincipEes of Programming Languages, pages 32-41, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. 17 R. P. Wilson and M. S. Lam. Efficient context-sensitive pointer analysis for C programs. In Proceedings of SIGPLAN '95 C on erence f on Programming Language Design and Implementation, pages l-12, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. 18 S. Zhang, B. G. Ryder, and W. Landi. Program decomposition for pointer analysis: A step toward practical analyses. In Proceedings of the Fourth ACM SIGSOFT Symposium on the Foundation of Software Engineering, pages 81-92, November 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Efficient points-to analysis for whole-program analysis

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in

          Full Access

          • Published in

            cover image ACM SIGSOFT Software Engineering Notes
            ACM SIGSOFT Software Engineering Notes  Volume 24, Issue 6
            Nov. 1999
            527 pages
            ISSN:0163-5948
            DOI:10.1145/318774
            Issue’s Table of Contents
            • cover image ACM Conferences
              ESEC/FSE-7: Proceedings of the 7th European software engineering conference held jointly with the 7th ACM SIGSOFT international symposium on Foundations of software engineering
              October 1999
              529 pages
              ISBN:3540665382

            Copyright © 1999 Authors

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 1 October 1999

            Check for updates

            Qualifiers

            • article

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader