Download:
|
by Bixia Zheng, Pen-chung Yew
http://www.cs.umn.edu/Research/Agassiz/Paper/bzheng.tr99-018.ps
Add To MetaCart
Abstract:
In this paper, we present a hierarchical flow-sensitive alias analysis algorithm which parameterizes the context-sensitive level. Our approach groups the pointers in a program by their maximum possible dereference levels. It then orders the analysis of each pointer group by its pointer level, starting from the highest level down to the lowest level. During the analysis of each pointer group, a bottom-up traversal of a program call graph is followed by a top-down traversal with the necessary interprocedural information propagated along the way. The interprocedural information is tagged with call-chains, which are the program call graph paths, to achieve context-sensitivity. We also provide empirical results to quantify how different context-sensitive levels affect the precision and the efficiency of the algorithm. Our studies show that (1) the precision improvement achieved by increasing the context-sensitive level of the analysis varies significantly depending on the programs analyzed; (2) increasing the maximum call-chain length for a higher degree of context sensitivity may trigger the exponential complexity problem [15, 10, 23]. Thus, it is very desirable for an algorithm to allow users to select an appropriate context-sensitive level that works best for a particular program. By parameterizing the maximum call-chain length used in tagging the interprocedural information, our approach provides this type of flexibility.
Citations
|
339
|
Effective context-sensitive pointer analysis for C programs
– Wilson, Lam
- 1995
|
|
329
|
Context-sensitive interprocedural points-to analysis in the presence of function pointers
– Enami, Ghiya, et al.
- 1994
|
|
301
|
A safe approximate algorithm for interprocedural pointer aliasing
– Landi, Ryder
- 1992
|
|
216
|
Two approaches to interprocedural data flow analysis
– Sharir, Pnueli
- 1981
|
|
187
|
Interprocedural May-Alias Analysis for Pointers: Beyond k-limiting
– Deutsch
- 1994
|
|
179
|
Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects
– Choi, Burke, et al.
- 1993
|
|
152
|
Is it a Tree, a DAG, or a Cyclic Graph? A shape analysis for heap-directed pointers in C
– Ghiya, Hendren
- 1996
|
|
122
|
Context-insensitive alias analysis reconsidered
– Ruf
- 1995
|
|
114
|
Interprocedural modification side effect analysis with pointer aliasing
– Landi, Ryder, et al.
- 1993
|
|
111
|
Pointer-induced aliasing: A problem classification
– Landi, Ryder
- 1991
|
|
108
|
Automatic construction of sparse data flow evaluation graphs
– Choi, Cytron, et al.
- 1991
|
|
65
|
Connection analysis: A practical interprocedural heap analysis for C
– Ghiya, Hendren
- 1995
|
|
62
|
Interprocedural def-use associations for C systems with single level pointers
– Pande, Landi, et al.
- 1994
|
|
59
|
The undecidability of aliasing
– Ramalingam
- 1994
|
|
54
|
Efficient computation of interprocedural definition-use chains
– Harrold, Soffa
- 1994
|
|
43
|
Program decomposition for pointer aliasing: A step towards practical analyses
– Zhang, Ryder, et al.
- 1996
|
|
26
|
Assesing the effects of flow-sensitivity on pointer alias analyses
– Hind, Pioli
- 1998
|
|
23
|
Partitioning dataflow analyses using types
– Ruf
- 1997
|
|
19
|
Experiments with combined analysis for pointer aliasing
– Zhang, Ryder, et al.
- 1998
|
|
6
|
An Empirical Comparison of Interprocedural Pointer Alias Analyses
– Hind, Pioli
- 1997
|
|
3
|
Context-sensitive interprocedural analysis in the presence of dynamic aliasing
– Sathyanathan, Lam
- 1996
|
|
1
|
Pointer intensive programs
– Austin
|
|
1
|
Interprocedural pointer anlias analysis
– Burke, Carini, et al.
- 1997
|