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.