SSA Destruction for Machine Code
Abstract
Chapter 3 of this book provides a basic algorithm for destructing SSA that suffers from several limitations and drawbacks: First, it works under implicit assumptions that are not necessarily fulfiled at machine level; second, it must rely on subsequent phases to remove the numerous copy operations it inserts; finally, it subsequently increases the size of the intermediate representation, thus making it unsuitable for just-in-time compilation.
The current chapter addresses these three issues: correctness (handling of machine-level constraints), code quality (elimination of copies), and algorithm efficiency (speed and memory footprint). The layout falls into three corresponding sections.