Methods are described that enhance pointer analysis for programs. Whereas
previous methods are constrained by the extremes of an inverse
relationship between time and information, the present methods
selectively unify information so as to allow a desired level of
analytical decision within a desired duration of analysis. One aspect of
the present invention includes selectively retaining information at a
first order of indirection based on variables in an assignment statement
while unifying information at subsequent orders of indirection. The
methods are used for pointer variables, but are equally useful to
function definitions, function calls, function pointers, indirect
function calls, and others. The methods may be used in client analysis
tools such as code browsers and slicing tools.