Rematerialization
- 1 July 1992
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGPLAN Notices
- Vol. 27 (7) , 311-321
- https://doi.org/10.1145/143103.143143
Abstract
This paper examines a problem that arises during global register allocation – rematerialization. If a value cannot be kept in a register, the allocator should recognize when it is cheaper to recompute the value (rematerialize it) than to store and reload it. Chaitin's original graph-coloring allocator handled simple instance of this problem correctly. This paper details a general solution to the problem and presents experimental evidence that shows its importance.Our approach is to tag individual values in the procedure's SSA graph with information specifying how it should be spilled. We use a variant of Wegman and Zadeck's sparse simple constant algorithm to propagate tags throughout the graph. The allocator then splits live ranges into values with different tags. This isolates those values that can be easily rematerialized from values that require general spilling. We modify the base allocator to use this information when estimating spill costs and introducing spill code.Our presentation focuses on rematerialization in the context of Chaitin's allocator; however, the problem arises in any global allocator. We believe that our approach will work in other allocators–while the details of implementation will vary, the key insights should carry over directly.Keywords
This publication has 15 references indexed in Scilit:
- Simple register spilling in a retargetable compilerSoftware: Practice and Experience, 1992
- A retargetable compiler for ANSI CACM SIGPLAN Notices, 1991
- Register allocation via hierarchical graph coloringACM SIGPLAN Notices, 1991
- Constant propagation with conditional branchesACM Transactions on Programming Languages and Systems, 1991
- The priority-based coloring approach to register allocationACM Transactions on Programming Languages and Systems, 1990
- Coloring heuristics for register allocationACM SIGPLAN Notices, 1989
- Register allocation via clique separatorsACM SIGPLAN Notices, 1989
- Spill code minimization techniques for optimizing compliersACM SIGPLAN Notices, 1989
- The impact of interprocedural analysis and optimization in the R n programming environmentACM Transactions on Programming Languages and Systems, 1986
- Register allocation in the SPUR Lisp compilerACM SIGPLAN Notices, 1986