Abstract
This paper presents a modular algorithm that efficiently computes parameterized pointer information, in which symbolic names are introduced to identify memory locations whose addresses may be passed into a procedure. Parameterized pointer information can be used by a client program analysis to compute parameterized summary information for a procedure. The client can then instantiate such information at each specific callsite by binding the symbolic names. Compared to non-parameterized pointer information, in which memory locations are identified using the same name throughout a program, parameterized pointer information lets the client reduce the spurious information that is propagated across procedure boundaries. Such reduction will improve not only the precision, but also the efficiency of the client. The paper also presents a set of empirical studies. The studies show that (1) the algorithm is efficient; and (2) using parameterized pointer information may significantly improve the precision and efficiency of program analyses.
Supported by NSF under CCR-9988294, CCR-0096321, and EIA-0196145, by Boeing Aerospace Corporation, and by the State of Georgia under the Yamacraw Mission.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
L. Andersen. Program analysis and specialization for the C programming language. Technical Report 94-19, University of Copenhagen, 1994.
D. C. Atkinson and W. G. Griswold. Effective whole-program analysis in the presence of pointers. In 6th International Symposium on the Foundations of Software Engineering, pages 46–55, Nov. 1998.
R. Chatterjee, B. G. Ryder, and W. A. Landi. Relevant context inference. In 26th Symposium on Principles of programming languages, pages 133–146, Jan. 1999.
B. Cheng and W. Hwu. Modular interprocedural pointer analysis using access paths: Design, implementation, and evaluation. In Conference on Programming Language Design and Implementation, pages 57–69, June 2000.
J.-D. Choi, M. Burke, and P. Carini. Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects. In Symposium on Principles of Programming Languages, pages 232–245, Jan. 1993.
M. Das. Unification-based pointer analysis with directional assignments. In Conference on Programming Language Design and Implementation, June 2000.
M. Emami, R. Ghiya, and L. J. Hendren. Context-sensitive interprocedural points-to analysis in the presence of function pointers. In Conference on Programming Language Design and Implementation, pages 242–256, June 1994.
M. Fahndrich, J. Rehof, and M. Das. Scalable context-sensitive flow analysis using instantiation constraints. In Conference on Programming Language Design and Implementation, pages 253–263, June 2000.
J. S. Foster, M. Fahndrich, and A. Aiken. Polymorphic verus monomorphic flow-insensitive points-to analysis for C. In Proceedings of 7th International Static Analysis Symposium, June 2000.
P. L. R. Group. PROLANGS Analysis Framework. http://www.prolangs.rutgers.edu/, Rutgers University, 1998.
M. Hind, M. Burke, P. Carini, and J.-D. Choi. Interprocedural pointer alias analysis. ACM Transactions on Programming Languages and Systems, 21(4):848–894, July 1999.
M. Hind and A. Pioli. Which pointer analysis should I use? In International Symposium on Software Testing and Analysis, pages 113–123, Aug. 2000.
N. Jones and S. Muchnick. Flow analysis and optimization of lisp-like structures. In S. Muchnick and N. Jones, editors, Program Flow Analysis: Theory and Applications, pages 102–131. 1979.
W. Landi and B. G. Ryder. A safe approximate algorithm for interprocedural pointer aliasing. In Conference on Programming Language Design and Implementation, pages 235–248, July 1992.
D. Liang and M. J. Harrold. Efficient points-to analysis for whole-program analysis. In Joint 7th European Software Engineering Conference and 7th ACM Symposium on Foundations of Software Engineering, pages 199–215, Sept. 1999.
D. Liang and M. J. Harrold. Reuse-driven interprocedural slicing in the presence of pointers and recursion. In International Conference on Software Maintenance, pages 421–430, Sept. 1999.
H. D. Pande, W. A. Landi, and B. G. Ryder. Interprocedural def-use associa-tions for C systems with single level pointers. IEEE Transactions on Software Engineering, 20(5):385–403, May 1994.
E. Ruf. Context-insensitive alias analysis reconsidered. In Conference on Program-ming Language Design and Implementation, pages 13–23, June 1995.
B. Steensgaard. Points-to analysis in almost linear time. In 23rd ACM Symposium on Principles of Programming Languages, pages 32–41, Jan. 1996.
M. Weiser. Program slicing. IEEE Transactions on Software Engineering, 10(4):352–357, July 1984.
R. P. Wilson and M. S. Lam. Efficient context-sensitive pointer analysis for C programs. In Conference on Programming Language Design and Implementation, pages 1–12, June 1995.
S. H. Yong, S. Horwitz, and T. Reps. Pointer analysis for programs with structures and casting. ACM SIGPLAN Notices, 34(5):91–103, May 1999.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2001 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Liang, D., Harrold, M.J. (2001). Efficient Computation of Parameterized Pointer Information for Interprocedural Analyses. In: Cousot, P. (eds) Static Analysis. SAS 2001. Lecture Notes in Computer Science, vol 2126. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-47764-0_16
Download citation
DOI: https://doi.org/10.1007/3-540-47764-0_16
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-42314-0
Online ISBN: 978-3-540-47764-8
eBook Packages: Springer Book Archive