Memory expansions are classical means to extract parallelism from imperativ
e programs. However, current techniques require some runtime mechanism to r
estore data flow when expansion maps have two definitions reaching the same
use to two different memory locations (e.g., phi functions in the SSA fram
ework). This paper presents an expansion framework for any type of data str
ucture in any imperative program, without the need for dynamic data now res
toration. The key idea is to group together definitions that reach a common
use. We show that such an expansion boils down to mapping each group to a
memory cell.