Interprocedural probabilistic pointer analysis

When performing aggressive optimizations and parallelization to exploit features of advanced architectures, optimizing and parallelizing compilers need to quantitatively assess the profitability of any transformations in order to achieve high performance. Useful optimizations and parallelization can be performed if it is known that certain points-to relationships would hold with high or low probabilities. For instance, if the probabilities are low, a compiler could transform programs to perform data speculation or partition iterations into threads in speculative multithreading, or it would avoid conducting code specialization. Consequently, it is essential for compilers to incorporate pointer analysis techniques that can estimate the possibility for every points-to relationship that it would hold during the execution. However, conventional pointer analysis techniques do not provide such quantitative descriptions and, thus, hinder compilers from more aggressive optimizations, such as thread partitioning in speculative multithreading, data speculations, code specialization, etc. We address this issue by proposing a probabilistic points-to analysis technique to compute the probability of every points-to relationship at each program point. A context-sensitive interprocedural algorithm has been implemented based on the iterative data flow analysis framework, and has been incorporated into SUIF and MachSUIF. Experimental results show this technique can estimate the probabilities of points-to relationships in benchmark programs with reasonable small errors, about 4.6 percent on average. Furthermore, the current implementation cannot disambiguate heap and array elements. The errors are further significantly reduced when the future implementation incorporates techniques to disambiguate heap and array elements.

[1]  Haitham Akkary,et al.  A dynamic multithreading processor , 1998, Proceedings. 31st Annual ACM/IEEE International Symposium on Microarchitecture.

[2]  Monica S. Lam,et al.  Efficient context-sensitive pointer analysis for C programs , 1995, PLDI '95.

[3]  Thomas W. Reps,et al.  Precise interprocedural dataflow analysis via graph reachability , 1995, POPL '95.

[4]  Erik Ruf,et al.  Context-insensitive alias analysis reconsidered , 1995, PLDI '95.

[5]  G. Ramalingam Data flow frequency analysis , 1996, PLDI '96.

[6]  Laurie J. Hendren,et al.  Context-sensitive interprocedural points-to analysis in the presence of function pointers , 1994, PLDI '94.

[7]  Avi Mendelson,et al.  Can program profiling support value prediction? , 1997, Proceedings of 30th Annual International Symposium on Microarchitecture.

[8]  Jenq Kuen Lee,et al.  Probabilistic Points-to Analysis , 2001, LCPC.

[9]  Barbara G. Ryder,et al.  Interprocedural modification side effect analysis with pointer aliasing , 1993, PLDI '93.

[10]  Barbara G. Ryder,et al.  A safe approximate algorithm for interprocedural aliasing , 1992, PLDI '92.

[11]  Thomas W. Reps,et al.  Pointer analysis for programs with structures and casting , 1999, PLDI '99.

[12]  Gurindar S. Sohi,et al.  Multiscalar processors , 1995, Proceedings 22nd Annual International Symposium on Computer Architecture.

[13]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[14]  Jong-Deok Choi,et al.  Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects , 1993, POPL '93.

[15]  Saumya K. Debray,et al.  Code Specialization Based on Value Profiles , 2000, SAS.

[16]  Jong-Deok Choi,et al.  Flow-Insensitive Interprocedural Alias Analysis in the Presence of Pointers , 1994, LCPC.

[17]  Susan Horwitz,et al.  Fast and accurate flow-insensitive points-to analysis , 1997, POPL '97.

[18]  Anne Rogers,et al.  Software caching and computation migration in Olden , 1995, PPOPP '95.

[19]  Richard Kreckel,et al.  Introduction to the GiNaC Framework for Symbolic Computation within the C++ Programming Language , 2000, J. Symb. Comput..

[20]  Jenq Kuen Lee,et al.  Compiler support for speculative multithreading architecture with probabilistic points-to analysis , 2003, PPoPP '03.

[21]  Antonia Zhai,et al.  A scalable approach to thread-level speculation , 2000, Proceedings of 27th International Symposium on Computer Architecture (IEEE Cat. No.RS00201).

[22]  Bjarne Steensgaard,et al.  Points-to analysis in almost linear time , 1996, POPL '96.

[23]  Barbara G. Ryder,et al.  Interprocedural Side Effect Analysis With Pointer Aliasing , 1993, PLDI.

[24]  Manuvir Das,et al.  Unification-based pointer analysis with directional assignments , 2000, PLDI '00.

[25]  Jenq Kuen Lee,et al.  Data distribution analysis and optimization for Pointer-based distributed programs , 1997, Proceedings of the 1997 International Conference on Parallel Processing (Cat. No.97TB100162).

[26]  Martin C. Rinard,et al.  Pointer analysis for multithreaded programs , 1999, PLDI '99.

[27]  Thomas Ball,et al.  Edge profiling versus path profiling: the showdown , 1998, POPL '98.

[28]  Matthew S. Hecht,et al.  Flow Analysis of Computer Programs , 1977 .

[29]  Roy Dz-Ching Ju,et al.  Probabilistic memory disambiguation and its application to data speculation , 1999, CARN.

[30]  Michael A. Harrison,et al.  Accurate static estimators for program optimization , 1994, PLDI '94.

[31]  Alain Deutsch,et al.  Interprocedural may-alias analysis for pointers: beyond k-limiting , 1994, PLDI '94.