Type-based alias analysis
- 1 May 1998
- proceedings article
- Published by Association for Computing Machinery (ACM)
- Vol. 33 (5), 106-117
- https://doi.org/10.1145/277650.277670
Abstract
This paper evaluates three alias analyses based on programming language types. The first analysis uses type compatibility to determine aliases. The second extends the first by using additional high-level information such as field names. The third extends the second with a flow-insensitive analysis. Although other researchers suggests using types to disambiguate memory references, none evaluates its effectiveness. We perform both static and dynamic evaluations of type-based alias analyses for Modula-3, a statically-typed type-safe language. The static analysis reveals that type compatibility alone yields a very imprecise alias analysis, but the other two analyses significantly improve alias precision. We use redundant load elimination (RLE) to demonstrate the effectiveness of the three alias algorithms in terms of the opportunities for optimization, the impact on simulated execution times, and to compute an upper bound on what a perfect alias analysis would yield. We show modest dynamic improvements for (RLE), and more surprisingly, that on average our alias analysis is within 2.5% of a perfect alias analysis with respect to RLE on 8 Modula-3 programs. These results illustrate that to explore thoroughly the effectiveness of alias analyses, researchers need static, dynamic, and upper-bound analysis. In addition, we show that for type-safe languages like Modula-3 and Java, a fast and simple alias analysis may be sufficient for many applications.Keywords
This publication has 25 references indexed in Scilit:
- The effects of the precision of pointer analysisLecture Notes in Computer Science, 1997
- Simple and effective analysis of statically-typed object-oriented programsPublished by Association for Computing Machinery (ACM) ,1996
- Commutativity analysisPublished by Association for Computing Machinery (ACM) ,1996
- A general data dependence test for dynamic, pointer-based data structuresPublished by Association for Computing Machinery (ACM) ,1994
- ATOMPublished by Association for Computing Machinery (ACM) ,1994
- Context-sensitive interprocedural points-to analysis in the presence of function pointersPublished by Association for Computing Machinery (ACM) ,1994
- A safe approximate algorithm for interprocedural aliasingPublished by Association for Computing Machinery (ACM) ,1992
- Pointer-induced aliasing: a problem taxonomyPublished by Association for Computing Machinery (ACM) ,1991
- Analysis of pointers and structuresPublished by Association for Computing Machinery (ACM) ,1990
- An efficient way to find the side effects of procedure calls and the aliases of variablesPublished by Association for Computing Machinery (ACM) ,1979