Pointer aliasing analysis is crucial to compile-time analyses for languages with general-purpose pointer usage (such as C), but many aliasing methods have proven quite costly. We present a technique that partitions the statements of a program to allow separate, and therefore possibly different, pointer aliasing analysis methods to be used on independent parts of the program. This decomposition enables exploration of tradeoff between algorithm efficiency and precision. We also present a new, efficient flow-insensitive pointer aliasing algorithm, which is used together with an existing flow-sensitive aliasing algorithm in our experiments. We demonstrate our technique in the context of determining side effects and variable fetches through names containing pointer dereferences (Thru-deref MOD/REF). Initial empirical results using a combination of a flow-sensitive and a flowinsensitive aliasing analysis on the same program, demonstrate that the resulting analysis is much faster than solely using the flow-sensitive method, and obtains similar precision for the Thruderef MOD/REF problems. 1
|
599
|
Data Structures and Algorithms
– Aho, Hopcroft, et al.
- 1983
|
|
519
|
Interprocedural slicing using dependence graphs
– Horwitz, Reps, et al.
- 1990
|
|
504
|
Data structures and network algorithms
– Tarjan
- 1983
|
|
415
|
Points-to analysis in almost linear time
– Steensgaard
- 1996
|
|
403
|
Program Analysis and Specialization for the C Programming Language. PhDthesis, University of Copenhagen, DIKU, DIKU report 94/19
– Andersen
- 1994
|
|
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
|
|
318
|
Analysis of pointers and structures
– Chase, Wegman, et al.
- 1990
|
|
301
|
A safe approximate algorithm for interprocedural pointer aliasing
– Landi, Ryder
- 1992
|
|
249
|
Solving shape-analysis problems in languages with destructive updating
– Sagiv, Reps, et al.
- 1998
|
|
215
|
Intergrating Noninterfering Version of Programs
– Horwitz, Reps, et al.
- 1989
|
|
211
|
Selecting software test data using data flow information
– Rapps, Weyuker
- 1985
|
|
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
|
|
155
|
Detecting conflicts between structure accesses
– Larus, Hilfinger
- 1988
|
|
152
|
Is it a Tree, a DAG, or a Cyclic Graph? A shape analysis for heap-directed pointers in C
– Ghiya, Hendren
- 1996
|
|
147
|
An applicable family of data flow testing criteria
– Frankl, Weyuker
- 1988
|
|
135
|
Detecting parallelism in C programs with recursive data structures
– Ghiya, Hendren, et al.
- 1998
|
|
129
|
Dependence analysis for pointer variables
– HORWITZ, PFEIFFER, et al.
|
|
122
|
Context-insensitive alias analysis reconsidered
– Ruf
- 1995
|
|
120
|
Experiments on the effectiveness of dataflow- and control-flow-based test adequacy criteria
– Hutchins, Foster, et al.
- 1994
|
|
114
|
Interprocedural modification side effect analysis with pointer aliasing
– Landi, Ryder, et al.
- 1993
|
|
111
|
Pointer-induced aliasing: A problem classification
– Landi, Ryder
- 1991
|
|
65
|
FlowInsensitive Interprocedural Alias Analysis
– Burke, Carini, et al.
- 1994
|
|
65
|
Interprocedural data flow analysis in the presence of pointers, procedure variables, and label variables
– Weihl
- 1980
|
|
59
|
The undecidability of aliasing
– Ramalingam
- 1994
|
|
54
|
Efficient computation of interprocedural definition-use chains
– Harrold, Soffa
- 1994
|
|
53
|
Interprocedural Aliasing in the Presence of Pointers
– Landi
- 1992
|
|
46
|
An efficient hybrid algorithm for incremental data flow analysis
– MARLOWE, G
- 1990
|
|
44
|
Incremental data flow analysis algorithms
– Ryder, Paull
- 1988
|
|
39
|
Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors
– Larus
- 1989
|
|
37
|
Interprocedural Data Flow Testing
– Harrold, Sofia
- 1989
|
|
37
|
A program integration algorithm that accommodates semantics-preserving transformations
– Yang, Horwitz, et al.
- 1992
|
|
32
|
Incremental data flow analysis in a structured program editor
– Zadeck
- 1984
|
|
24
|
Pointer-induced aliasing: A clarification
– MARLOWE, LANDI, et al.
- 1993
|
|
22
|
Incremental data flow analysis via dominator and attribute updates
– CARROLL, G
- 1988
|
|
11
|
ISMM: The Incremental Software Maintenance Manager
– Ryder
- 1989
|
|
10
|
Data-flow testing with pointers and function calls
– Ostrand
- 1990
|
|
3
|
Program decomposition for pointer-induced aliasing analysis
– Zhang, Ryder, et al.
- 1996
|
|
2
|
Undecidability of static analysis. ACM letters on programming languages and systems
– Landi
- 1992
|
|
1
|
Incremental anlaysis of the mod problem for c
– Yur, Ryder
- 1995
|