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]
Joe D. Warren,et al.
The program dependence graph and its use in optimization
,
1987,
TOPL.
[2]
Barbara G. Ryder,et al.
An efficient hybrid algorithm for incremental data flow analysis
,
1989,
POPL '90.
[3]
Gregg Rothermel,et al.
Separate computation of alias information for reuse
,
1996,
ISSTA '96.
[4]
David Notkin,et al.
An empirical study of static call graph extractors
,
1996,
Proceedings of IEEE 18th International Conference on Software Engineering.
[5]
Jong-Deok Choi,et al.
Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects
,
1993,
POPL '93.
[6]
Barbara G. Ryder,et al.
A safe approximate algorithm for interprocedural aliasing
,
1992,
PLDI '92.
[7]
Barbara G. Ryder,et al.
Pointer-induced aliasing: a problem classification
,
1991,
POPL '91.
[8]
Laurie J. Hendren,et al.
Context-sensitive interprocedural points-to analysis in the presence of function pointers
,
1994,
PLDI '94.
[9]
James R. Larus,et al.
Detecting conflicts between structure accesses
,
1988,
PLDI '88.