Abstract
In this paper we present an alias analysis which is able to infer position-dependent equality relationships between pointers in recursively defined data structures or arrays. Our work is based on a semantic model of the execution of a program in which every allocated object is identified by a timestamp which represents the state of the program at the instant of the object creation. We provide a simple numerical abstraction of timestamps which is accurate enough to distinguish between elements of arrays or list-like structures. We follow the methodology of Abstract Interpretation to derive a sound approximation of the program semantics from this abstraction. The computability of our analysis is then guaranteed by using an abstract numerical lattice to represent relations between timestamps.
This work was supported in part by the RTD project IST-1999-20527 DAEDALUS of the european IST FP5 programme.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
L.O. Andersen. Program Analysis and Specialization for the C Programming Language. PhD thesis, DIKU, University of Copenhagen, 1994.
F. Bourdoncle. Efficient chaotic iteration strategies with widenings. In Proc. of the International Conference on Formal Methods in Programming and their Applications, volume 735 of LNCS, pages 128–141, 1993.
M. Burke, P. R. Carini, J.-D. Choi, and M. Hind. Interprocedural pointer alias analysis. Technical report, IBM Research Report, 1997.
P. Cousot. Semantic foundations of program analysis. In S.S. Muchnick and N.D. Jones, editors, Program Flow Analysis: Theory and Applications, chapter 10, pages 303–342. Prentice-Hall, Inc., Englewood Cliffs, 1981.
P. Cousot and R. Cousot. Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Conference Record of the Fourth ACM Symposium on Principles of Programming Languages, pages 238–252, 1977.
P. Cousot and R. Cousot. Systematic design of program analysis frameworks. In Proceedings of the Sixth Conference on Principles of Programming Languages POPL’79, pages 269–282. ACM Press, 1979.
P. Cousot and R. Cousot. Abstract interpretation frameworks. Journal of logic and computation, 2(4):511–547, August 1992.
P. Cousot and N. Halbwachs. Automatic discovery of linear restraints among variables of a program. In Proceedings of the Fifth Conference on Principles of Programming Languages. ACM Press, 1978.
A. Deutsch. On determining lifetime and aliasing of dynamically allocated data in higher-order functional specifications. In POPL 1990, pages 157–168, 1990.
A. Deutsch. A storeless model of aliasing and its abstraction using finite representations of right-regular equivalence relations. In Proceedings of the 1992 International Conference on Computer Languages, pages 2–13. IEEE Computer Society Press, 1992.
A. Deutsch. Interprocedural may-alias analysis for pointers: beyond k-limiting. In ACM SIGPLAN’94 Conference on Programming Language Design and Implementation. ACM Press, 1994.
R. Ghiya and L. J. Hendren. Is it a tree, a dag, or a cyclic graph? a shape analysis for heap-directed pointers in c. In Porceedings of POPL 1996, pages 1–15, 1996.
P. Granger. Static analysis of arithmetical congruences. International Journal of Computer Mathematics, 30:165–190, 1989.
P. Granger. Static analysis of linear congruence equalities among variables of a program. In TAPSOFT’91, volume 493. Lecture Notes in Computer Science, 1991.
M. Hind and A. Pioli. Evaluating the effectiveness of pointer alias analyses. Science of Computer Programming, 39(1):31–55, 2001.
H.B.M Jonkers. Abstract storage structures. In De Bakker and Van Vliet, editors, Algorithmic languages, pages 321–343. IFIP, 1981.
M. Karr. Affine relationships among variables of a program. Acta Informatica, pages 133–151, 1976.
F. Masdupuy. Using abstract interpretation to detect array data dependencies. In Proceedings of the International Symposium on Supercomputing, 1991.
A. Miné. A new numerical abstract domain based on difference-bound matrices. In PADO II, volume 2053 of LNCS, pages 155–172. Springer-Verlag, May 2001.
PolySpace Technologies. http://www.polyspace.com.
Shmuel Sagiv, Thomas W. Reps, and Reinhard Wilhelm. Solving shape-analysis problems in languages with destructive updating. TOPLAS, 20(1):1–50, 1998.
B. Steensgaard. Points-to analysis by type inference of programs with structures and unions. In Proceedings of the 1996 International Conference on Compiler Construction, volume 1060 of LNCS, pages 136–150, 1996.
A. Venet. Abstract cofibered domains: Application to the alias analysis of untyped programs. In Proceedings of the Third International Static Analysis Symposium SAS’96, volume 1145 of Lecture Notes in Computer Science, pages 366–382. Springer-Verlag, 1996.
A. Venet. Automatic analysis of pointer aliasing for untyped programs. Science of Computer Programming, 35(2):223–248, 1999.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2002 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Venet, A. (2002). Nonuniform Alias Analysis of Recursive Data Structures and Arrays. In: Hermenegildo, M.V., Puebla, G. (eds) Static Analysis. SAS 2002. Lecture Notes in Computer Science, vol 2477. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45789-5_6
Download citation
DOI: https://doi.org/10.1007/3-540-45789-5_6
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-44235-6
Online ISBN: 978-3-540-45789-3
eBook Packages: Springer Book Archive