: Copy avoidance refers to the safe replacement, at compile time, of copying operations by destructive updates in single-assignment languages. Conceptually, the problem can be divided into two components: identifying memory cells that can safely be reused at a program point via destructive updating; and deciding how to actually reuse such cells. Most of the work on this problem, to date, has focused on the rst component, typically via data ow analyses to detect when memory cells become dead and may be safely reused. In this paper, we exe second component of the problem. We give an abstract formulation of the memoryreuse problem, show that optimalreuse is NP-complete in general, and givean e cient polynomial-timeapproximationalgorithmbased on graph-matching techniques that produces optimal solutions for most commonly encountered cases of memory reuse.
Saumya K. Debray