ABSTRACT
We present a points-to analysis that aims at enabling loop-based dependence analysis in the presence of Java references. The analysis is based on an abstraction called element-wise points-to (ewpt) mapping. An ewpt mapping summarizes, in a compact representation, the relation between a pointer and the heap object it points to, for every instance of the pointer inside a loop and for every array element directly accessible through this pointer. Such instance-wise and element-wise information is especially important for loop-based dependence analyses and for a language where multi-dimensional arrays are implemented as arrays of pointers. We describe an iterative algorithm to compute ewpt mappings. We also present techniques to remove objects from ewpt mappings for destructive updates.The points-to algorithm was implemented and evaluated on a set of benchmark programs. We demonstrate that ewpt information can significantly improve the precision of dependence analysis. In many cases, the dependence analysis reports no false dependences due to array accesses.
- Rastislav Bodik, Ragiv Gupta, and Vivek Sarkar. ABCD: Eliminating array bounds checks on demand. In ACM Symp. on Programming Language Design and Implementation, June 2000]] Google ScholarDigital Library
- C. Chambers, I. Pechtchanski, V. Sarkar, M. Serrano, and H. Srinivasan. Dependence analysis for Java. In Workshop on Languages and Compilers for Parallel Computing, August 1999]] Google ScholarDigital Library
- Ben-Chung Cheng and Wen mei Hwu. Modular interprocedural pointer analysis using access paths: design, implementation, and evaluation. In ACM Symp. on Programming Language Design and Implementation, pages 57--69, June 2000]] Google ScholarDigital Library
- Jong-Deok Choi, Michael Burke, and Paul Carini. Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects. In ACM Symp. on Principles of Programming Languages, pages 232--245, 1993]] Google ScholarDigital Library
- Albert Cohen, Peng Wu, and David Padua. Pointer analysis for monotonic container traversals. Technical Report CSRD 1586, University of Illinois at Urbana-Champaign, January 2001]]Google Scholar
- Alain Deutsch. Interprocedural may-alias analysis for pointers: Beyond k-limiting. In ACM Symp. on Programming Language Design and Implementation, June 1994]] Google ScholarDigital Library
- A. Diwan, K.S. McKinley, and E.B. Moss. Type-based alias analysis. In ACM Symp. on Programming Language Design and Implementation, June 1998]] Google ScholarDigital Library
- Rakesh Ghiya and Laurie J. Hendren. Connection analysis: A practical interprocedural heap analysis for C. In Workshop on Languages and Compilers for Parallel Computing. Springer-Verlag, 1995]] Google ScholarDigital Library
- Rakesh Ghiya and Laurie J. Hendren. Putting pointer analysis to work. In ACM Symp. on Principles of Programming Languages, January 1998]] Google ScholarDigital Library
- Laurie J. Hendren and Alexandru Nicolau. Parallelizing programs with recursive data structures. In IEEE Trans. on Parallel and Distributed Computing, January 1990]] Google ScholarDigital Library
- Joseph Hummel, Laurie~J. Hendren, and Alex Nicolau. A general data dependence test for dynamic, pointer-based data structures. In ACM Symp. on Programming Language Design and Implementation, June 1994]] Google ScholarDigital Library
- Joseph Hummel, Laurie~J. Hendren, and Alex Nicolau. A language for conveying the alising properties of dynamic, pointer-based data structures. In Inthernational Parallel Processing Symposium, pages 208--216, April 1994]] Google ScholarDigital Library
- J. Larus and P. Hilfinger. Detecting conflicts between structure accesses. In ACM Symp. on Programming Language Design and Implementation, Atlanta, GA, June 1988]] Google ScholarDigital Library
- J. E. Moreira, S. P. Midkiff, and M. Gupta. From flop to megaflops: Java for technical computing. ACM Trans. on Programming Languages and Systems, 22(2):265--295, March 2000]] Google ScholarDigital Library
- William Pugh. The Omega test: A fast and practical integer programming algorithm for dependence analysis. In Supercomputing, 1991]] Google ScholarDigital Library
- Radu Rugina and Martin Rinart. Symbolic bound analysis of pointers, array indices and accessed memory regions. In PLDI'2000. ACM, 2000]] Google ScholarDigital Library
- M. Sagiv, T. Reps, and R. Wilhelm. Solving shape analysis problems in languages with destructive updating. In ACM Symp. on Principles of Programming Languages, January 1996]] Google ScholarDigital Library
- B. Steensgaard. Points-to analysis in almost linear time. In ACM Symp. on Principles of Programming Languages, January 1996]] Google ScholarDigital Library
- R. Wilson and M. Lam. Efficient context-sensitive pointer analysis for C programs. In ACM Symp. on Programming Language Design and Implementation, June 1995]] Google ScholarDigital Library
- Peng Wu. Analyses of pointers, induction variables, and container objects for dependence testing. Technical Report UIUCDCS-R-2001-2209, University of Illinois at Urbana-Champaign, May 2001. Ph.D Thesis]] Google ScholarDigital Library
Index Terms
- Instance-wise points-to analysis for loop-based dependence testing
Recommendations
Connection Analysis: A Practical Interprocedural Heap Analysis for C
Special issue: selected papers from the eighth international workshop on languages and compilers for parallel computingThis paper presents a practical heap analysis technique, connection analysis, that can be used to disambiguate heap accesses in C programs. The technique is designed for analyzing programs that allocate many disjoint objects in the heap such as ...
A probabilistic pointer analysis for speculative optimizations
Proceedings of the 2006 ASPLOS ConferencePointer analysis is a critical compiler analysis used to disambiguate the indirect memory references that result from the use of pointers and pointer-based data structures. A conventional pointer analysis deduces for every pair of pointers, at any ...
A probabilistic pointer analysis for speculative optimizations
Proceedings of the 2006 ASPLOS ConferencePointer analysis is a critical compiler analysis used to disambiguate the indirect memory references that result from the use of pointers and pointer-based data structures. A conventional pointer analysis deduces for every pair of pointers, at any ...
Comments