Register allocation & spilling via graph coloring

  title={Register allocation \& spilling via graph coloring},
  author={Gregory J. Chaitin},
  booktitle={SIGPLAN '82},
  • G. Chaitin
  • Published in SIGPLAN '82 23 June 1982
  • Computer Science
In a previous paper we reported the successful use of graph coloring techniques for doing global register allocation in an experimental PL/I optimizing compiler. When the compiler cannot color the register conflict graph with a number of colors equal to the number of available machine registers, it must add code to spill and reload registers to and from storage. Previously the compiler produced spill code whose quality sometimes left much to be desired, and the ad hoe techniques used took… 
Our research involves improved algorithms for graph-coloring, in the context of register allocation. We extend the usual algorithm, first proposed by Chaitin, adding two further routines, one a form
Register Allocation with Graph Coloring by Ant Colony Optimization
A new algorithm for intraprocedural register allocation called CA-RT-RA is described, an algorithm that extends a classic graph coloring register allocator to use the authors' graph coloring algorithm Color Ant-RT and is able to minimize the amount of spills.
Optimal Register Allocation in Polynomial Time
A graph-coloring register allocator that optimally allocates registers for structured programs in polynomial time is presented and works for such a huge class of programs.
Live Range Splitting in a Graph Coloring Register Allocator
A passive form of live range splitting that uses splitting as an alternative to spilling and can be coupled with Bergner's to create an allocator that makes a cost-based choice between splitting, interference region spilling, and spilling completely for each spilled live range.
Fine-Grain Register Allocation Based on a Global Spill Costs Analysis
A new register allocation technique is proposed that improves the efficiency by using information about the flow of variable references of a program by performing register allocation at every reference of a variable in the order of the variable reference flow.
An improved approach of register allocation via graph coloring
  • Lei Gao, Ce Shi
  • Computer Science, Engineering
    IS&T/SPIE Electronic Imaging
  • 2005
By abstracting register allocation to graph coloring, the allocation process is simplified and the resource of register can be used more effectively and the cost of memory access can be reduced greatly.
Register Allocation Based on a Reference Flow Analysis
This paper proposes two variations of the register allocation proposed in [13] that reduces computation time by employing a simplified graph-coloring algorithm for variable register allocation and generates more efficient code with aggressive variable flow analysis demanding a large amount of computation.
Graph-coloring and treescan register allocation using repairing
A decoupled approach that first lowers the register pressure by spilling variables, and then performs live ranges splitting/coalescing /coloring in a separate phase enables the design of simpler, cleaner, and more efficient register allocators.
Register-file allocation via graph coloring
A heuristic technique, designated as register-file allocation (RFA), for mapping variables into single-port register files, based on coloring the conflict graph, a graph generated from the read/write conflict analysis of the variables of a scheduled data flow graph is presented.
Build Simplify Potential Spill Select Actual Spill Coloring Heuristic
Graph coloring is the de facto standard technique for register allocation within a compiler. In this paper we examine the intuition that a better coloring algorithm results in better register


Register Allocation Via Coloring
The Register Allocation Phase of an experimental PL/I compiler for the IBM System/370 is described, which suggests that global register allocation approaching that of hand-coded assembly language may be attainable.
A methodology for the real world
Preliminary results of an experimental implementation in a PL/I optimizing compiler suggest that global register allocation approaching that of hand-coded assembly language may be attainable.
Optimization of range checking
An analysis is given for optimizing run-time range checks in regions of high execution frequency using strength reduction, code motion and common subexpression elimination.
The 801 minicomputer
An overview of an experimental system developed at the IBM T. J. Watson Research Center that consists of a running hardware prototype, a control program and an optimizing compiler, which features a primitive instruction set which can be completely hard-wired.