Precise, flow-sensitive analyses of pointer relationships often
represent each object using the set of local variables that point to it
(the alias set), possibly augmented with additional predicates. Many
such analyses are difficult to scale due to the size of the abstraction
and due to flow sensitivity. Taking advantage of certain properties of
SSA form, we propose an efficient data structure that allows much of
the representations of sets at different points in the program to be
shared. The key enabling properties of SSA form are that every point
at which a variable is live is dominated by its definition, and that
the definitions of any set of simultaneously live variables are totally
ordered according to the dominance relation. Thanks to these properties,
we can implement the transfer function in such a way that all set
operations are reduced to local changes to the head of a suitably
ordered list. Thus, the tails of the lists can be shared.
ref: http://plg.uwaterloo.ca/~olhotak/pubs/ismm09.pdf