Off-line variable substitution for scaling points-to analysis
- 1 May 2000
- conference paper
- Published by Association for Computing Machinery (ACM)
- Vol. 35 (5) , 47-56
- https://doi.org/10.1145/349299.349310
Abstract
Most compiler optimizations and software productivity tools rely oninformation about the effects of pointer dereferences in a program.The purpose of points-to analysis is to compute this informationsafely, and as accurately as is practical. Unfortunately, accuratepoints-to information is difficult to obtain for large programs,because the time and space requirements of the analysis becomeprohibitive.We consider the problem of scaling flow- and context-insensitivepoints-to analysis to large programs, perhaps containing hundreds ofthousands of lines of code. Our approach is based on a variable substitution transformation, which is performed off-line, i.e.,before a standard points-to analysis is performed. The general idea ofvariable substitution is that a set of variables in a program can be replaced by a single representative variable, thereby reducing the input size of the problem. Our main contribution is a linear-time algorithm which finds a particular variable substitution that maintains the precision of the standard analysis, and is also very effective in reducing the size of the problem.We report our experience in performing points-to analysis on largeC programs, including some industrial-sized ones. Experiments show thatour algorithm can reduce the cost of Andersen's points-to analysis substantially: on average, it reduced the running time by 53% and the memory cost by 59%, relative to an efficient baseline implementation of the analysis.Keywords
This publication has 13 references indexed in Scilit:
- Projection mergingPublished by Association for Computing Machinery (ACM) ,2000
- Interprocedural pointer alias analysisACM Transactions on Programming Languages and Systems, 1999
- Partial online cycle elimination in inclusion constraint graphsPublished by Association for Computing Machinery (ACM) ,1998
- Solving shape-analysis problems in languages with destructive updatingACM Transactions on Programming Languages and Systems, 1998
- Program decomposition for pointer aliasingPublished by Association for Computing Machinery (ACM) ,1996
- Points-to analysis in almost linear timePublished by Association for Computing Machinery (ACM) ,1996
- Is it a tree, a DAG, or a cyclic graph? A shape analysis for heap-directed pointers in CPublished by Association for Computing Machinery (ACM) ,1996
- Efficient context-sensitive pointer analysis for C programsPublished by Association for Computing Machinery (ACM) ,1995
- 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