Abstract
A shape-analysis algorithm statically analyzes a program to determine information about the heap-allocated data structures that the program manipulates. The results can be used to understand or verify programs. They also contain information valuable for debugging, compile-time garbage collection, instruction scheduling, and parallelization.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
U. Assmann and M. Weinhardt. Interprocedural heap analysis for parallelizing imperative programs. In W. K. Giloi, S. Jähnichen, and B. D. Shriver, editors, Programming Models For Massively Parallel Computers, pages 74–82, Washington, DC, September 1993. IEEE Press. 12
D.R. Chase, M. Wegman, and F. Zadeck. Analysis of pointers and structures. In SIGPLAN Conf. on Prog. Lang. Design and Impl., pages 296–310, New York, NY, 1990. ACM Press. 12, 13
F. Corbera, R. Asenjo, and E.L. Zapata. New shape analysis techniques for automatic parallelization of C code. In International Computing Symposium, 1999. 2
P. Cousot and R. Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction of approximation of fixed points. In Symp. on Princ. of Prog. Lang., pages 238–252, New York, NY, 1977. ACM Press. 9
A. Deutsch. Interprocedural may-alias analysis for pointers: Beyond k-limiting. In SIGPLAN Conf. on Prog. Lang. Design and Impl., pages 230–241, New York, NY, 1994. ACM Press. 14
N. Dor, M. Rodeh, and M. Sagiv. Detecting memory errors via static pointer analysis. In Proceedings of the ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE’98), pages 27–34, June 1998. Available at “http://www.math.tau.ac.il/~nurr/paste98.ps.gz”. 3
L. Hendren. Parallelizing Programs with Recursive Data Structures. PhD thesis, Cornell Univ., Ithaca, NY, Jan 1990. 14
L. Hendren, J. Hummel, and A. Nicolau. Abstractions for recursive pointer data structures: Improving the analysis and the transformation of imperative programs. In SIGPLAN Conf. on Prog. Lang. Design and Impl., pages 249–260, New York, NY, June 1992. ACM Press. 2
L. Hendren and A. Nicolau. Parallelizing programs with recursive data structures. IEEE Trans. on Par. and Dist. Syst., 1(1):35–47, January 1990. 14
S. Horwitz, P. Pfeiffer, and T. Reps. Dependence analysis for pointer variables. In SIGPLAN Conf. on Prog. Lang. Design and Impl., pages 28–40, New York, NY, 1989. ACM Press. 14
N.D. Jones and S.S. Muchnick. Flow analysis and optimization of Lisp-like structures. In S.S. Muchnick and N.D. Jones, editors, Program Flow Analysis: Theory and Applications, chapter 4, pages 102–131. Prentice-Hall, Englewood Cliffs, NJ, 1981. 13
N.D. Jones and S.S. Muchnick. A flexible approach to interprocedural data flow analysis and programs with recursive data structures. In Symp. on Princ. of Prog. Lang., pages 66–74, New York, NY, 1982. ACM Press. 12, 13
W. Landi and B.G. Ryder. Pointer induced aliasing: A problem classification. In Symp. on Princ. of Prog. Lang., pages 93–103, New York, NY, January 1991. ACM Press. 14
J.R. Larus. Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors. PhD thesis, Univ. of Calif., Berkeley, CA, May 1989. 13
J.R. Larus and P.N. Hilfinger. Detecting conflicts between structure accesses. In SIGPLAN Conf. on Prog. Lang. Design and Impl., pages 21–34, New York, NY, 1988. ACM Press. 13
T. Lev-Ami. TVLA: A framework for Kleene based static analysis. Master’s thesis, 2000. 12
F. Nielson, H. Riis Nielson, and C. Hankin. Principles of Program Analysis. Springer Verlag, 1999. 9, 13
F. Nielson, H. Riis Nielson, and M. Sagiv. A Kleene analysis of mobile ambients. In Proceedings of ESOP’2000, 2000. 12
J. Plevyak, A.A. Chien, and V. Karamcheti. Analysis of dynamic structures for efficient parallel execution. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Languages and Compilers for Parallel Computing, volume 768 of Lec. Notes in Comp. Sci., pages 37–57, Portland, OR, August 1993. Springer-Verlag. 12
J.L. Ross and M. Sagiv. Building a bridge between pointer aliases and program dependences. In Proceedings of the 1998 European Symposium On Programming, pages 221–235, March 1998. Available at “http://www.math.tau.ac.il/~ sagiv”. 2
M. Sagiv, T. Reps, and R. Wilhelm. Solving shape-analysis problems in languages with destructive updating. In Symp. on Princ. of Prog. Lang., New York, NY, January 1996. ACM Press. 13
M. Sagiv, T. Reps, and R. Wilhelm. Solving shape-analysis problems in languages with destructive updating. Trans. on Prog. Lang. and Syst., 20(1):1–50, January 1998. 12, 13
M. Sagiv, T. Reps, and R. Wilhelm. Parametric shape analysis via 3-valued logic. In Symp. on Princ. of Prog. Lang., 1999. Available at “http://www.cs.wisc.edu/wpis/papers/popl99.ps”. 2, 10, 15
J. Stransky. A lattice for abstract interpretation of dynamic (Lisp-like) structures. Inf. and Comp., 101(1):70–102, Nov. 1992. 12, 13
E.Y.-B. Wang. Analysis of Recursive Types in an Imperative Language. PhD thesis, Univ. of Calif., Berkeley, CA, 1994. 13
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2000 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Wilhelm, R., Sagiv, M., Reps, T. (2000). Shape Analysis. In: Watt, D.A. (eds) Compiler Construction. CC 2000. Lecture Notes in Computer Science, vol 1781. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-46423-9_1
Download citation
DOI: https://doi.org/10.1007/3-540-46423-9_1
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-67263-0
Online ISBN: 978-3-540-46423-5
eBook Packages: Springer Book Archive