This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
Interprocedural Probabilistic Pointer Analysis
October 2004 (vol. 15 no. 10)
pp. 893-907

Abstract—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. This paper addresses 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 will be further significantly reduced when the future implementation incorporates techniques to disambiguate heap and array elements.

[1] M. Burke, P. Carini, J.-D. Choi, and M. Hind, Flow-Insensitive Interprocedural Alias Analysis in the Presence of Pointers Proc. Eighth Int'l Workshop Languages and Compilers for Parallel Computing, Aug. 1995.
[2] J.-D. Choi, M. Burke, and P. Carini, Efficient Flow-Sensitive Interprocedural Computation of Pointer-Induced Aliases and Side Effects Proc. Conf. Record of the 20th Ann. ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages, pp. 232-245, Jan. 1993.
[3] M. Das, Unification-Based Pointer Analysis with Directional Assignments Proc. ACM SIGPLAN 2000 Conf. Programming Language Design and Implementation (PLDI-00), vol. 35.5, pp. 35-46, June 2000.
[4] A. Deutsch, Interprocedural May-Alias Analysis for Pointers: Beyond$k\/$-Limiting Proc. ACM SIGPLAN '94 Conf. Programming Language Design and Implementation, vol. 29, no. 6, pp. 230-241, June 1994.
[5] M. Emami, R. Ghiya, and L.J. Hendren, Context-Sensitive Interprocedural Points-To Analysis in the Presence of Function Pointers Proc. ACM SIGPLAN '94 Conf. Programming Language Design and Implementation, vol. 29, no. 6, pp. 242-256, June 1994
[6] W. Landi and B.G. Ryder, A Safe Approximate Algorithm for Interprocedural Pointer Aliasing Proc. ACM SIGPLAN '92 Conf. Programming Language Design and Implementation, vol. 27, no. 7, pp. 235-248, July 1992.
[7] E. Ruf, Context-Insensitive Alias Analysis Reconsidered Proc. ACM SIGPLAN '95 Conf. Programming Language Design and Implementation, vol. 30, no. 6, pp. 13-22, June 1995.
[8] R. Rugina and M. Rinard, Pointer Analysis for Multithreaded Programs Proc. ACM SIGPLAN '99 Conf. Programming Language Design and Implementation, vol. 34, no. 5, pp. 77-90, May 1999.
[9] M. Shapiro and S. Horwitz, Fast and Accurate Flow-Insensitive Points-To Analysis Proc. Conf. Record of POPL '97: 24th ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages, pp. 1-14, Jan. 1997.
[10] B. Steensgaard, Points-To Analysis in Almost Linear Time Proc. Conf. Record of POPL '96: 23rd ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages, pp. 32-41, Jan. 1996.
[11] R.P. Wilson and M.S. Lam, Efficient Context-Sensitive Pointer Analysis for C Programs Proc. ACM SIGPLAN '95 Conf. Programming Language Design and Implementation, vol. 30, no. 6, pp. 1-12, June 1995.
[12] S.H. Yong, S. Horwitz, and T. Reps, Pointer Analysis for Programs with Structures and Casting Proc. ACM SIGPLAN '99 Conf. Programming Language Design and Implementation, vol. 34, no. 5, pp. 91-103, May 1999.
[13] IA-64 Application Developer's Architecture Guide. I. Corp., 1999.
[14] R.D. Ju, J.-F. Collard, and K. Oukbir, Probabilistic Memory Disambiguation and Its Application to Data Speculation Proc. Third Workshop Interaction between Compilers and Computer Architecture, Oct. 1998.
[15] H. Akkary and M.A. Driscoll, A Dynamic Multithreading Processor Proc. 31st. Ann. Int'l Symp. Microarchitecture, 1998.
[16] G. Sohi, S.E. Breach, and T.N. Vijaykumar, Multiscalar Processors Proc. Int'l Symp. Computer Architecture, pp. 414-425, 1995.
[17] J.G. Steffan, C.B. Colohan, A. Zhai, and T.C. Mowry, A Scalable Approach to Thread-Level Speculation Proc. 27th Ann. Int'l Symp. Computer Architecture, pp. 1-12, 2000.
[18] P.-S. Chen, M.-Y. Hung, Y.-S. Hwang, R.D.-C. Ju, and J.K. Lee, Compiler Support for Speculative Multithreading Architecture with Probabilistic Points-To Analysis Proc. ACM SIGPLAN Conf. Principles and Practice of Parallel Programming, pp. 25-36, June 2003.
[19] R. Muth, S. Watterson, and S. Debray, Code Specialization Based on Value Profiles Proc. Seventh Int'l Static Analysis Symp., pp. 340-359, 2000.
[20] T.S.S.C. Groupd, The Suif Library technical report, Stanford Univ., 1995.
[21] M.D. Smith, The Suif Machine Library technical report, Division of Eng. and Applied Science, Harvard Univ., Mar. 1998.
[22] G. Ramalingam, Data Flow Frequency Analysis Proc. ACM SIGPLAN'96 Conf. Programming Language Design and Implementation, vol. 31, no. 5, pp. 267-277, May 1996.
[23] T.A. Wagner, V. Maverick, S.L. Graham, and M.A. Harrison, Accurate Static Estimators for Program Optimization Proc. ACM SIGPLAN '94 Conf. Programming Language Design and Implementation, vol. 29, no. 6, pp. 85-96, June 1994.
[24] M. Hecht, Flow Analysis of Computer Programs. North-Holland: Elsevier, 1977.
[25] S.S. Muchnick, Advanced Compiler Design&Implementation. Morgen Kaufmann, 1997.
[26] W. Landi, B.G. Ryder, and S. Zhang, Interprocedural Side Effect Analysis with Pointer Aliasing Proc. ACM SIGPLAN '93 Conf. Programming Language Design and Implementation, vol. 28, no. 6, pp. 56-67, June 1993.
[27] C. Bauer, A. Frink, and R. Krechel, Introduction to the GiNaC Framework for Symbolic Computation within the C++ Programming Language J. Symbolic Computation, vol. 33, pp. 1-12, 2002.
[28] T. Ball, P. Mataga, and M. Sagiv, Edge Profiling versus Path Profiling: The Showdown Proc. 25th ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages, pp. 134-148, 1998.
[29] F. Gabbay and A. Mendelson, Can Program Profiling Support Value Prediction? Proc. 30th Int'l Symp. Microarchitecture, pp. 270-280, Dec. 1997.
[30] T. Reps, S. Horwitz, and M. Sagiv, Precise Interprocedural Dataflow Analysis via Graph Reachability Proc. Conf. Record of POPL '95: 22nd ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages, pp. 49-61, Jan. 1995.
[31] M.C. Carlisle and A. Rogers, Software Caching and Computation Migration in Olden Proc. ACM SIGPLAN Conf. Principles and Practice of Parallel Programming, pp. 29-39, July 1995.
[32] J.K. Lee, D. Ho, and Y.C. Chuang, Data Distribution Analysis and Optimization for Pointer-Based Distributed Programs Proc. 26th Int'l Conf. Parallel Processing (ICPP), pp. 56-63, Aug. 1997.
[33] Y.-S. Hwang, P.-S. Chen, J.K. Lee, and R.D.-C. Ju, Probabilistic Points-To Analysis Proc. 2001 Int'l Workshop Languages and Compilers for Parallel Computing, Aug. 2001.

Index Terms:
Multithreading, speculation, interprocedural program analysis, points-to analysis, compilers, optimization.
Citation:
Peng-Sheng Chen, Yuan-Shin Hwang, Roy Dz-Ching Ju, Jenq Kuen Lee, "Interprocedural Probabilistic Pointer Analysis," IEEE Transactions on Parallel and Distributed Systems, vol. 15, no. 10, pp. 893-907, Oct. 2004, doi:10.1109/TPDS.2004.56
Usage of this product signifies your acceptance of the Terms of Use.