Pointer Analysis for Programs with Structures and Casting
Suan Hsi Yong, Susan Horwitz, and Thomas Reps
Type casting allows a program to access an object as if it had a type
different from its declared type. This complicates the design of a
pointer-analysis algorithm that treats structure fields as
separate objects;
therefore,
some previous pointer-analysis algorithms ``collapse'' a structure
into a single variable. The disadvantage of this approach is that it
can lead to very imprecise points-to information. Other algorithms
treat each field as a separate object based on its offset and size.
While this approach leads to more precise results, the results are not
portable because the memory layout of structures is implementation
dependent.
This paper first describes the complications introduced by type
casting, then presents a tunable pointer-analysis framework for
handling structures in the presence of casting. Different instances
of this framework produce algorithms with different levels of
precision, portability, and efficiency. Experimental results from
running our implementations of four instances of this framework show
that (i) it is important to distinguish fields of structures in
pointer analysis, but (ii) making conservative approximations when
casting is involved usually does not cost much in terms of time,
space, or the precision of the results.
(Click here to access the paper:
PostScript,
PDF.)
University of Wisconsin