Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.5555/647477.727768guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Interprocedural Shape Analysis for Recursive Programs

Published: 02 April 2001 Publication History

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 optimize, understand, debug, or verify programs. Existing algorithms are quite imprecise in the presence of recursive procedure calls. This is unfortunate, since recursion provides a natural way to manipulate linked data structures. We present a novel technique for shape analysis of recursive programs. An algorithm based on our technique has been implemented. It handles programs manipulating linked lists written in a subset of C. The algorithm is significantly more precise than existing algorithms. For example, it can verify the absence of memory leaks in many recursive programs; this is beyond the capabilities of existing algorithms.

References

[1]
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, September 1993.
[2]
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, 1990.
[3]
P. Cousot and R. Cousot. Systematic design of program analysis frameworks. In Symp. on Princ. of Prog. Lang., pages 269-282, New York, NY, 1979. ACM Press.
[4]
A. Deutsch. On determining lifetime and aliasing of dynamically allocated data in higher-order functional specifications. In Symp. on Princ. of Prog. Lang., 1990.
[5]
N. Dor, M. Rodeh, and M. Sagiv. Checking cleanness in linked lists. In SAS'00, Static Analysis Symposium. Springer, 2000.
[6]
R. Ghiya and L. Hendren. Putting pointer analysis to work. In Symp. on Princ. of Prog. Lang., New York, NY, 1998. ACM Press.
[7]
R. Ghiya and L.J. Hendren. Is it a tree, a dag, or a cyclic graph? In Symp. on Princ. of Prog. Lang., New York, NY, January 1996. ACM Press.
[8]
L. Hendren. Parallelizing Programs with Recursive Data Structures. PhD thesis, Cornell Univ., Ithaca, NY, Jan 1990.
[9]
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, June 1992.
[10]
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. Prentice-Hall, Englewood Cliffs, NJ, 1981.
[11]
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]
J.R. Larus and P.N. Hilfinger. Detecting conflicts between structure accesses. In SIGPLAN Conf. on Prog. Lang. Design and Impl., pages 21-34, 1988.
[13]
T. Lev-Ami and M. Sagiv. TVLA: A framework for Kleene based static analysis. In SAS'00, Static Analysis Symposium. Springer, 2000.
[14]
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, Jan 1998.
[15]
M. Sagiv, T. Reps, and R. Wilhelm. Parametric shape analysis via 3-valued logic. In Symp. on Princ. of Prog. Lang., 1999.
[16]
M. Sharir and A. Pnueli. Two approaches to interprocedural data flow analysis. In S.S. Muchnick and N.D. Jones, editors, Program Flow Analysis: Theory and Applications, chapter 7, pages 189-234. Prentice-Hall, Englewood Cliffs, NJ, 1981.
[17]
B. Steensgaard. Points-to analysis in almost-linear time. In Symp. on Princ. of Prog. Lang., pages 32-41, 1996.

Cited By

View all
  • (2021)Loop parallelization using dynamic commutativity analysisProceedings of the 2021 IEEE/ACM International Symposium on Code Generation and Optimization10.1109/CGO51591.2021.9370319(150-161)Online publication date: 27-Feb-2021
  • (2018)Optimizing remote data transfers in X10Proceedings of the 27th International Conference on Parallel Architectures and Compilation Techniques10.1145/3243176.3243209(1-15)Online publication date: 1-Nov-2018
  • (2018)TwASProceedings of the 33rd Annual ACM Symposium on Applied Computing10.1145/3167132.3167330(1857-1864)Online publication date: 9-Apr-2018
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Guide Proceedings
CC '01: Proceedings of the 10th International Conference on Compiler Construction
April 2001
370 pages
ISBN:354041861X

Publisher

Springer-Verlag

Berlin, Heidelberg

Publication History

Published: 02 April 2001

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 06 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2021)Loop parallelization using dynamic commutativity analysisProceedings of the 2021 IEEE/ACM International Symposium on Code Generation and Optimization10.1109/CGO51591.2021.9370319(150-161)Online publication date: 27-Feb-2021
  • (2018)Optimizing remote data transfers in X10Proceedings of the 27th International Conference on Parallel Architectures and Compilation Techniques10.1145/3243176.3243209(1-15)Online publication date: 1-Nov-2018
  • (2018)TwASProceedings of the 33rd Annual ACM Symposium on Applied Computing10.1145/3167132.3167330(1857-1864)Online publication date: 9-Apr-2018
  • (2011)Bottom-up shape analysis using LISFACM Transactions on Programming Languages and Systems10.1145/2039346.203934933:5(1-41)Online publication date: 23-Nov-2011
  • (2011)Calling context abstraction with shapesProceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages10.1145/1926385.1926406(173-186)Online publication date: 26-Jan-2011
  • (2011)Calling context abstraction with shapesACM SIGPLAN Notices10.1145/1925844.192640646:1(173-186)Online publication date: 26-Jan-2011
  • (2010)Finite differencing of logical formulas for static analysisACM Transactions on Programming Languages and Systems10.1145/1749608.174961332:6(1-55)Online publication date: 13-Aug-2010
  • (2010)A relational approach to interprocedural shape analysisACM Transactions on Programming Languages and Systems10.1145/1667048.166705032:2(1-52)Online publication date: 8-Feb-2010
  • (2008)Efficient context-sensitive shape analysis with graph based heap modelsProceedings of the Joint European Conferences on Theory and Practice of Software 17th international conference on Compiler construction10.5555/1788374.1788396(245-259)Online publication date: 29-Mar-2008
  • (2008)Verifying safety properties of concurrent heap-manipulating programsACM Transactions on Programming Languages and Systems10.1145/1745312.174531532:5(1-50)Online publication date: 24-May-2008
  • Show More Cited By

View Options

View options

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media