Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Advanced compiler optimizations for supercomputers
Communications of the ACM - Special issue on parallelism
Interprocedural dependence analysis and parallelization
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
Automatic translation of FORTRAN programs to vector form
ACM Transactions on Programming Languages and Systems (TOPLAS)
Analysis of functional programs to detect run-time garbage cells
ACM Transactions on Programming Languages and Systems (TOPLAS)
Detecting conflicts between structure accesses
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Software pipelining: an effective scheduling technique for VLIW machines
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
FAUST: an environment for programming parallel scientific applications
Proceedings of the 1988 ACM/IEEE conference on Supercomputing
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Lifetime analysis of dynamically allocated objects
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Dependence analysis for pointer variables
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
The interface description language: definition and use
The interface description language: definition and use
The design and analysis of spatial data structures
The design and analysis of spatial data structures
Skip lists: a probabilistic alternative to balanced trees
Communications of the ACM
Supercompilers for parallel and vector computers
Supercompilers for parallel and vector computers
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Selected papers of the second workshop on Languages and compilers for parallel computing
Selected papers of the second workshop on Languages and compilers for parallel computing
The PARSEQ project: an interim report
Selected papers of the second workshop on Languages and compilers for parallel computing
Analysis of pointers and structures
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Parallelizing programs with recursive data structures
Parallelizing programs with recursive data structures
A timed Petri-net model for fine-grain loop scheduling
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Analysis of recursive types in Lisp-like languages
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
Dynamic program parallelization
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
A safe approximate algorithm for interprocedural aliasing
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Dependence Analysis for Supercomputing
Dependence Analysis for Supercomputing
Program Flow Analysis: Theory and Application
Program Flow Analysis: Theory and Application
Parallelizing Programs with Recursive Data Structures
IEEE Transactions on Parallel and Distributed Systems
Perfect Pipelining: A New Loop Parallelization Technique
ESOP '88 Proceedings of the 2nd European Symposium on Programming
A Program's Eye View of Miprac
Proceedings of the 5th International Workshop on Languages and Compilers for Parallel Computing
ISCA '82 Proceedings of the 9th annual symposium on Computer Architecture
Speedup of ordinary programs
Dependence analysis for subscripted variables and its application to program transformations
Dependence analysis for subscripted variables and its application to program transformations
Optimizing supercompilers for supercomputers
Optimizing supercompilers for supercomputers
Restructuring symbolic programs for concurrent execution on multiprocessors
Restructuring symbolic programs for concurrent execution on multiprocessors
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Pointer analysis: haven't we solved this problem yet?
PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A language for role specifications
LCPC'01 Proceedings of the 14th international conference on Languages and compilers for parallel computing
JuliusC: a practical approach for the analysis of divide-and-conquer algorithms
LCPC'04 Proceedings of the 17th international conference on Languages and Compilers for High Performance Computing
Hi-index | 0.00 |
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.