This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
Separate Computation of Alias Information for Reuse
July 1996 (vol. 22 no. 7)
pp. 442-460

Abstract—Interprocedural data flow information is useful for many software testing and analysis techniques, including data flow testing, regression testing, program slicing, and impact analysis. For programs with aliases, these testing and analysis techniques can yield invalid results, unless the data flow information accounts for aliasing effects. Recent research provides algorithms for performing interprocedural data flow analysis in the presence of aliases; however, these algorithms are expensive, and achieve precise results only on complete programs. This paper presents an algorithm for performing alias analysis on incomplete programs that lets individual software components such as library routines, subroutines, or subsystems be independently analyzed. The paper also presents an algorithm for reusing the results of this separate analysis when the individual software components are linked with calling modules. Our algorithms let us analyze frequently used software components, such as library routines or classes, independently, and reuse the results of that analysis when analyzing calling programs, without incurring the expense of completely reanalyzing each calling program. Our algorithms also provide a way to analyze large systems incrementally.

[1] A.V. Aho, R. Sethi, and J.D. Ullman, Compilers, Principles, Techniques and Tools.New York: Addison-Wesley, 1985.
[2] D. R. Chase, M. Wegman, and F. K. Zadeck,“Analysis of pointers and structures,”inProc. SIGPLAN '90 Conf. Programming Languages Design and Implementation,June 1990, pp. 296–310;SIGPLAN Notices, vol. 25, no. 6.
[3] J.-D. Choi, M. Burke, and P. Carini, “Efficient Flow-Sensitive Interprocedural Computation of Pointer-Induced Aliases and Side Effects,” Proc. 20th Ann. ACM Symp. Principles of Programming Languages, pp. 232-245, Jan. 1993.
[4] M. Emami, R. Ghiya, and L.J. Hendren, “Context-Sensitive Interprocedural Points-to Analysis in the Presence of Function Pointers,” Proc. Conf. Programming Language Design and Implementation, pp. 242-257, 1994.
[5] J. Ferrante,K.J. Ottenstein,, and J.D. Warren,“The program dependence graph and its use in optimization,” ACM Trans. Programming Languages and Systems, vol. 9, no. 3, pp. 319-349, June 1987.
[6] M.J. Harrold, L. Larsen, J. Lloyd, D. Nedved, M. Page, G. Rothermel, M. Singh, and M. Smith, "Aristotle: A System for the Development of Program-Analysis-Based Tools," Proc. 33rd Ann. Southeast Conf., pp. 110-119, ACM Press, Mar. 1995.
[7] M.J. Harrold and G. Rothermel, "Separate Computation of Alias Information for Reuse," Proc. ACM Int'l Symp. Software Testing and Analysis, pp. 107-120, Jan. 1996.
[8] W.A. Landi, “Interprocedural Aliasing in the Presence of Pointers,” Technical Report LCSR-TR-174 and PhD Thesis, Dept. of Computer Science, Rutgers Univ., 1992.
[9] W.A. Landi and B.G. Ryder, “Pointer-Induced Aliasing: A Problem Classification,” Proc. ACM SIGPLAN/SIGACT Symp. Principles of Programming Languages, pp. 93–103, Jan. 1991.
[10] W. Landi and B.G. Ryder, "A Safe Approximate Algorithm for Pointer-Induced Aliasing," Proc. ACM SIGPLAN'92 Conf. Programming Language Design and Implementation (PLDI'92), pp. 235-248, 1992. published as SIGPLAN Notices, vol. 27, no. 7.
[11] J. R. Larus and P. N. Hilfinger,“Detecting conflicts between structure accesses,”inProc. SIGPLAN '88 Conf. Programming Languages Design and Implementation,June 1988, pp. 21–34;SIGPLAN Notices, vol. 23, no. 7.
[12] T. J. Marlowe and B. G. Ryder,“An efficient hybrid algorithm for incremental data flow analysis,”inProc. 17th Symp. Principles of Programming Languages,Jan. 1990, pp. 184–196.
[13] T.J. Marlowe and B.G. Ryder, "Hybrid Incremental Alias Anal-ysis," Proc. 24th Hawaii Int'l Conf. System Sciences, pp. 428-437, Jan. 1991.
[14] G. Murphy, D. Notkin, and E.-C. Lan, "An Empirical Study of Static Call Graph Extractors," The 18th Int'l Conf. Software Eng., pp. 90-99, 1996.

Index Terms:
Aliasing, data flow analysis, pointers, reuse, separate analysis, static analysis.
Citation:
Mary Jean Harrold, Gregg Rothermel, "Separate Computation of Alias Information for Reuse," IEEE Transactions on Software Engineering, vol. 22, no. 7, pp. 442-460, July 1996, doi:10.1109/32.538603
Usage of this product signifies your acceptance of the Terms of Use.