## Connection Analysis: A Practical Interprocedural Heap Analysis for C (1995)

### Cached

### Download Links

- [www.sable.mcgill.ca]
- [www-acaps.cs.mcgill.ca]
- [www.sable.mcgill.ca]
- [www-acaps.cs.mcgill.ca]
- DBLP

### Other Repositories/Bibliography

Venue: | International Journal of Parallel Programming |

Citations: | 73 - 6 self |

### BibTeX

@ARTICLE{Ghiya95connectionanalysis:,

author = {Rakesh Ghiya and Laurie Hendren},

title = {Connection Analysis: A Practical Interprocedural Heap Analysis for C},

journal = {International Journal of Parallel Programming},

year = {1995},

volume = {24}

}

### Years of Citing Articles

### OpenURL

### Abstract

This paper presents a practical heap analysis technique, connection analysis, that can be used to disambiguate heap accesses in C programs. The technique is designed for analyzing programs that allocate many disjoint objects in the heap such as dynamically-allocated arrays in scientific programs. The method statically estimates connection matrices which encode the connection relationships between all heap-directed pointers at each program point. The results of the analysis can be used by parallelizing compilers to determine when two heapallocated objects are guaranteed to be disjoint, and thus can be used to improve array dependence and interference analysis. The method has been implemented as a context-sensitive interprocedural analysis in the McCAT optimizing/parallelizing C compiler. Experimental results are given to compare the accuracy of connection analysis versus a conservative estimate based on points-to analysis. This work supported by NSERC, FCAR, and the EPPP project (fin...

### Citations

1094 | The splash-2 programs: Characterization and methodological considerations
- Woo, Ohara, et al.
- 1995
(Show Context)
Citation Context ...namics N-body problem to evaluate forces and potentials in a system of water molecules in the liquid state, using spatial data structures. It is part of the new SPLASH benchmark suite called SPLASH-2 =-=[24]-=-, and we use the sequential version. The primary data structures used by this program are linked lists and dynamically-allocated arrays of pointers pointing to linked lists. ffl volrend: This benchmar... |

712 |
SPLASH: Stanford Parallel Applications for Shared-Memory
- Singh, Weber, et al.
- 1992
(Show Context)
Citation Context ...enchmarks are part of William Landi's test suite [10], and have been obtained from him. ffl cholesky: It performs Cholesky factorization of a sparse positive definite matrix. It is part of the SPLASH =-=[23]-=- benchmark suite from Stanford. It implements the sparse matrix using structures with non-recursive pointer fields. These pointers point to dynamic arrays of type int. ffl mp3d: This is another benchm... |

396 | Efficient context sensitive pointer analysis for c programs
- WILSON, LAM
- 1995
(Show Context)
Citation Context ... (1) disambiguating pointers that point to objects on the stack, and (2) disambiguating pointers that point to objects on the heap. There has been a considerable amount of work in both of these areas =-=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]-=-, although more attention has been paid to actually implementing methods that work well for stack-allocated objects [10, 11, 15, 16, 17]. A complete discussion and comparison of these methods can be f... |

387 | Context-sensitive interprocedural points-to analysis in the presence of function pointers
- EMAMI, GHIYA, et al.
- 1994
(Show Context)
Citation Context ... (1) disambiguating pointers that point to objects on the stack, and (2) disambiguating pointers that point to objects on the heap. There has been a considerable amount of work in both of these areas =-=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]-=-, although more attention has been paid to actually implementing methods that work well for stack-allocated objects [10, 11, 15, 16, 17]. A complete discussion and comparison of these methods can be f... |

381 | Analysis of pointers and structures - Chase, Wegman, et al. - 1990 |

328 | A safe approximate algorithm for interprocedural aliasing
- LANDI, RYDER
- 1992
(Show Context)
Citation Context ... (1) disambiguating pointers that point to objects on the stack, and (2) disambiguating pointers that point to objects on the heap. There has been a considerable amount of work in both of these areas =-=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]-=-, although more attention has been paid to actually implementing methods that work well for stack-allocated objects [10, 11, 15, 16, 17]. A complete discussion and comparison of these methods can be f... |

293 | Solving shapeanalysis problems in languages with destructive updating
- Sagiv, Reps, et al.
(Show Context)
Citation Context ...een pointer variables (handles). Deutsch [12, 13] proposed a more powerful storeless model using pairs of symbolic access paths qualified by constraints that make them aliased. Recently, Sagiv et. al =-=[25]-=- have presented abstract storage graphs (ASGs) to accurately capture the heap structure in the presence of destructive updates. The above approaches can provide a more refined estimation of heap struc... |

227 | Interprocedural may-alias analysis for pointers: Beyond klimiting
- Deutsch
- 1994
(Show Context)
Citation Context |

219 | Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side-effects - Choi, Burke, et al. - 1993 |

195 |
Is it a tree, a DAG, or a cyclic graph? a shape analysis for heap-directed pointers in C
- Ghiya, Hendren
(Show Context)
Citation Context ...On the other hand, connection analysis is our level-1 heap analysis, and is not designed to disambiguate heap accesses at this level. We have implemented a level-2 heap analysis called shape analysis =-=[26]-=- that can disambiguate accesses to the same heap data structure. 43 Finally as the other implemented methods give experimental results for the stack and heap pointers combined, we do not have a direct... |

162 | Pardelizing programs with recursive data structures
- Hendren, Nicolau
- 1990
(Show Context)
Citation Context |

159 |
Detecting conflicts between structure accesses
- Larus, Hilfinger
- 1988
(Show Context)
Citation Context |

144 |
Reps: Dependence analysis for pointer variables
- Horwitz, Pfeiffer, et al.
- 1989
(Show Context)
Citation Context |

126 | Context-insensitive alias analysis reconsidered
- Ruf
(Show Context)
Citation Context |

103 |
A flexible approach to interprocedural data flow analysis and programs with recursive data structures
- Jones, Muchnick
- 1982
(Show Context)
Citation Context |

91 | The interprocedural analysis and automatic parallelization of Scheme programs - Harrison - 1989 |

74 |
A storeless model of aliasing and its abstractions using finite represent at ions of right-regular equivalence relations
- Deutsch
- 1992
(Show Context)
Citation Context |

69 |
Program Flow Analysis, Theory and Applications, chapter 4, Flow Analysis and Optimization of LISP-like Structures
- Jones, Muchnick
- 1983
(Show Context)
Citation Context |

56 | Interprocedural Aliasing in the Presence of Pointers - Landi - 1992 |

45 | Designing the McCAT compiler based on a family of structured intermediate representations
- Hendren, Donawa, et al.
- 1992
(Show Context)
Citation Context ...nsitive interprocedural analysis in the McCAT parallelizing/optimizing C compiler. The analysis is performed on the SIMPLE intermediate representation which is a simplified, compositional subset of C =-=[20, 21, 22]-=-. The analysis is performed after points-to analysis and is implemented in a similar framework [19, 15]. The implementation of connection analysis is structured as a simple analysis for each 20 basic ... |

44 | Taming Control Flow: A Structured Approach to Eliminating GOTO Statements
- Erosa, Hendren
- 1994
(Show Context)
Citation Context ...nsitive interprocedural analysis in the McCAT parallelizing/optimizing C compiler. The analysis is performed on the SIMPLE intermediate representation which is a simplified, compositional subset of C =-=[20, 21, 22]-=-. The analysis is performed after points-to analysis and is implemented in a similar framework [19, 15]. The implementation of connection analysis is structured as a simple analysis for each 20 basic ... |

36 | Analysis of dynamic structures for efficient parallel execution
- Plevyak, Chien, et al.
- 1994
(Show Context)
Citation Context |

30 |
A practical interprocedural alias analysis for an optimizing/paralleLizing compiler
- Emami
- 1993
(Show Context)
Citation Context ...k-directed and heap-directed pointer problems are solved together. In contrast, our approach is to decouple the problems and to first solve the stack-directed pointer problem using points-to analysis =-=[15, 19]-=-, and then use the result of points-to analysis as a starting point to solve the heap-directed pointer problem. The motivation for decoupling the problems is that the solutions for the two problems ar... |

20 |
A technique for analyzing pointer and structure references in parallel restructuring compilers
- Guarna
- 1988
(Show Context)
Citation Context |

16 |
An analysis framework for the McCAT compiler
- Sridharan
- 1992
(Show Context)
Citation Context ...nsitive interprocedural analysis in the McCAT parallelizing/optimizing C compiler. The analysis is performed on the SIMPLE intermediate representation which is a simplified, compositional subset of C =-=[20, 21, 22]-=-. The analysis is performed after points-to analysis and is implemented in a similar framework [19, 15]. The implementation of connection analysis is structured as a simple analysis for each 20 basic ... |

12 | Ecient interprocedural computation of pointerinduced aliases and side eects - Choi, Burke, et al. - 1993 |

11 | Detecting con between structure accesses - Larus, Hil - 1988 |

10 | A approach to interprocedural data analysis and programs with recursive data structures - Jones, Muchnick - 1982 |

8 |
Zadeck, "Analysis of Pointers and Structures
- Chase, Wegman, et al.
- 1990
(Show Context)
Citation Context |

8 | Practical techniques for interprocedural heap analysis. Master 's thesis
- Ghiya
- 1995
(Show Context)
Citation Context ...gh more attention has been paid to actually implementing methods that work well for stack-allocated objects [10, 11, 15, 16, 17]. A complete discussion and comparison of these methods can be found in =-=[18]-=-. Stack-directed pointers exhibit the important property that their targets always possess a name (the name of the variable allocated to that location on the stack). Using this property, pointer relat... |

7 |
Compiling Lisp programs for parallel execution
- Larus
- 1991
(Show Context)
Citation Context |

5 | Analysis of dynamic structures for ecient parallel execution - Plevyak, Chien, et al. - 1993 |

3 | A storeless model of aliasing and its abstractions using representations of right-regular equivalence relations - Deutsch - 1992 |

3 | Taming control A structured approach to eliminating goto statements - Erosa, Hendren - 1994 |

1 |
III, "The interprocedural analysis and automatic parallelization of Scheme programs
- Harrison
- 1989
(Show Context)
Citation Context |