Program understanding activities are more difficult for programs written in
languages (such as C) that heavily make use of pointers for data structure
manipulation, because the programmer needs to build a mental model of the
memory use and of the pointers to its locations. Pointers also pose additio
nal problems to the tools supporting program understanding, since they intr
oduce additional dependences that have to be accounted for. This paper exte
nds the flow insensitive context insensitive points-to analysis (PTA) algor
ithm proposed by Steensgaard, to cover arbitrary combinations of pointer de
references, array subscripts and field selections. It exhibits interesting
properties, among which scalability resulting from the low complexity and g
ood performances is one. The results of the analysis are valuable by themse
lves, as their graphical display represents the points-to links between loc
ations. They are also integrated with other program understanding technique
s like, e.g., call graph construction, slicing, plan recognition and archit
ectural recovery. The use of this algorithm in the framework of the program
understanding environment CANTO is discussed. (C) 1999 Elsevier Science In
c. All rights reserved.