Abstract description of pointer data structures
- 1 September 1992
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Letters on Programming Languages and Systems
- Vol. 1 (3) , 243-260
- https://doi.org/10.1145/151640.151644
Abstract
Even though impressive progress has been made in the area of optimizing and parallelizing array-based programs, the application of similar techniques to programs using pointer data structures has remained difficult. Unlike arrays which have a small number of well-defined properties, pointers can be used to implement a wide variety of structures which exhibit a much larger set of properties. The diversity of these structures implies that programs with pointer data structures cannot be effectively analyzed by traditional optimizing and parallelizing compilers.In this paper we present a new approach that leads to the improved analysis and transformation of programs with recursively defined pointer data structures. Our approach is based on a mechanism for the Abstract Description of Data Structures (ADDS). ADDS is a simple extension to existing imperative languages that allows the programmer to explicitly describe the important properties of a large class of data structures. These abstract descriptions may be used by the compiler to achieve more accurate program analysis in the presence of pointers, which in turn enables and improves the application of numerous optimizing and parallelizing transformations. We present ADDS by describing various data structures; we discuss how such descriptions can be used to improve analysis and debugging; and we supply three important transformations enabled by ADDS.Keywords
This publication has 15 references indexed in Scilit:
- Analysis of recursive types in Lisp-like languagesPublished by Association for Computing Machinery (ACM) ,1992
- Skip lists: a probabilistic alternative to balanced treesCommunications of the ACM, 1990
- Parallelizing programs with recursive data structuresIEEE Transactions on Parallel and Distributed Systems, 1990
- Analysis of functional programs to detect run-time garbage cellsACM Transactions on Programming Languages and Systems, 1988
- SUPERB: A tool for semi-automatic MIMD/SIMD parallelizationParallel Computing, 1988
- Automatic translation of FORTRAN programs to vector formACM Transactions on Programming Languages and Systems, 1987
- Advanced compiler optimizations for supercomputersCommunications of the ACM, 1986
- Interprocedural dependence analysis and parallelizationACM SIGPLAN Notices, 1986
- An Efficient Program for Many-Body SimulationSIAM Journal on Scientific and Statistical Computing, 1985
- Unrolling loops in fortranSoftware: Practice and Experience, 1979