Pointer Analysis for Programs with Structures and Casting
Suan Hsi Yong, Susan Horwitz, Thomas Reps
Computer Sciences Department, University of Wisconsin-Madison
Abstract:
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.