2. 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.
2010 1 8
4. Contributions
• identify the problems specific to structures
and casting
• a tunable framework for pointer analysis
(flow sensitive)
• To evaluate the relative efficacies of
different approaches to handling structures
in the presence of casting
2010 1 8
5. Average point-to set size
Consequently, a points-to fact of the form s points-to a
would be interpreted as “any field of s may point to any
field of a “.
2010 1 8