This paper describes a compiler-assisted approach to
provide multiple instruction rollback capability for general
purpose processor registers. The objective is achieved by
having the compiler remove all forms of N-instruction anti-
dependencies. Pseudo register anti-dependencies are removed
by loop protection, node splitting, and loop expansion
techniques; machine register anti-dependencies are prevented
by introducing anti-dependency constraints in the interference
graph used by the register allocator. To support separate
compilation, inter-procedural anti-dependency constraints are
added to the code generator to guarantee the termination of
machine register anti-dependencies across procedure boundaries.
The algorithms have been implemented in the IMPACT C compiler.
Experiments illustrating the effectiveness of this approach
are described.