Sciweavers

CC
2003
Springer

Combined Code Motion and Register Allocation Using the Value State Dependence Graph

13 years 9 months ago
Combined Code Motion and Register Allocation Using the Value State Dependence Graph
We define the Value State Dependence Graph (VSDG). The VSDG is a form of the Value Dependence Graph (VDG) extended by the addition of state dependence edges to model sequentialised computation. These express store dependencies and loop termination dependencies of the original program. We also exploit them to express the additional serialization inherent in producing final object code. The central idea is that this latter serialization can be done incrementally so that we have a class of algorithms which effectively interleave register allocation and code motion, thereby avoiding a well-known phase-order problem in compilers. This class operates by first normalizing the VSDG during construction, to remove all duplicated computation, and then repeatedly choosing between: (i) allocating a value to a register, (ii) spilling a value to memory, (iii) moving a loop-invariant computation within a loop to avoid register spillage, and (iv) statically duplicating a computation to avoid regist...
Neil Johnson, Alan Mycroft
Added 06 Jul 2010
Updated 06 Jul 2010
Type Conference
Year 2003
Where CC
Authors Neil Johnson, Alan Mycroft
Comments (0)