Pointer analysis
Encyclopedia
In computer science
pointer analysis, or points-to analysis, is a static code analysis
technique that establishes which pointers, or heap references, can point to which variables or storage locations. It is often a component of more complex analyses such as escape analysis
. A generalization of pointer analysis is shape analysis
.
Simplifications include:
Computer science
Computer science or computing science is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems...
pointer analysis, or points-to analysis, is a static code analysis
Static code analysis
Static program analysis is the analysis of computer software that is performed without actually executing programs built from that software In most cases the analysis is performed on some version of the source code and in the other cases some form of the object code...
technique that establishes which pointers, or heap references, can point to which variables or storage locations. It is often a component of more complex analyses such as escape analysis
Escape analysis
In programming language compiler optimization theory, escape analysis is a method for determining the dynamic scope of pointers. It is related to pointer analysis and shape analysis....
. A generalization of pointer analysis is shape analysis
Shape analysis (software)
In program analysis, a shape analysis is a static code analysis technique that discovers and verifies properties of linked, dynamically allocated data structures in computer programs. It is typically used at compile time to find software bugs or to verify high-level correctness properties of...
.
Introduction
Performing pointer analysis on all but the smallest of programs is a very resource intensive activity. Various simplifications have been made to reduce this overhead, the disadvantages of these simplifications is that the calculated set of objects pointed to may be larger than it is in practice.Simplifications include:
- Treating all references to a structured object as being to one object.
- Ignoring flow-of control when analysing which objects are assigned to pointers, known as context-insensitive pointer analysis (when ignoring the context in which function calls are made) or flow-insensitive pointer analysis (when ignoring the control flow within a procedure).