Optimistic register coalescing

  title={Optimistic register coalescing},
  author={Jinpyo Park and Soo-Mook Moon},
  journal={ACM Trans. Program. Lang. Syst.},
Graph-coloring register allocators eliminate copies by coalescing the source and target nodes of a copy if they do not interfere in the interference graph. Coalescing, however, can be harmful to the colorability of the graph because it tends to yield a graph with nodes of higher degrees. Unlike aggressive coalescing, which coalesces any pair of noninterfering copy-related nodes, conservative coalescing or iterated coalescing perform safe coalescing that preserves the colorability. Unfortunately… 

Copy coalescing by graph recoloring

A coalescing technique designed for, but not limited to, SSA-form register allocation that improves upon two long-standing inconveniences of graph coloring register allocation by exploiting that a valid coloring can be easily obtained by an Ssa-based register allocator.

Live-range Unsplitting for Faster Optimal Coalescing ( extended version )

This report provides all the solutions of the optimal coalescing challenge, including the 3 instances that were previously unsolved, and presents some theoretical properties that give rise to an algorithm for reducing interference graphs, while preserving optimality.

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.

Parallel Copy Elimination on Data Dependence Graphs

This work presents an extension of a local recoloring technique called Parallel Copy Motion that performs code motion on data dependence graphs in order to eliminate useless copies and reorder instructions, while at the same time a valid register assignment is preserved.

Register coalescing techniques for heterogeneous register architecture with copy sifting

It is shown that optimistic coalescing is also useful for an embedded processor to better handle such heterogeneity of the register architecture, and a modified algorithm for optimal coalescing that helps a register allocator is developed.

Scratchpad memory allocation for data aggregates via interval coloring in superperfect graphs

This article develops an SPM allocation algorithm that places arrays in an interference graph in SPM by examining its maximal cliques and achieves close-to-optimal results and is superior to graph coloring for the benchmarks tested.

A comparison of graph coloring heuristics for register allocation based on coalescing in interval graphs

  • Thomas ZeitlhoferB. Wess
  • Computer Science
    2004 IEEE International Symposium on Circuits and Systems (IEEE Cat. No.04CH37512)
  • 2004
This paper compares different coloring heuristics in order to obtain minimum register requirements and shows that Chaitin's well known coloring heuristic produces optimum results for interval graphs.

Optimizing translation out of SSA using renaming constraints

This work proposes a method to reduce the /spl Phi/-related copies during the out of SSA translation, thanks to a pinning-based coalescing algorithm that is aware of renaming constraints.

Graph Coloring vs. Optimal Register Allocation for Optimizing Compilers

This article shows how optimistic graph coloring register allocation can be extended to handle peculiarities and irregularities in their register sets and presents an exponential algorithm which in most cases can compute an optimal solution for register allocation and copy elimination.



Iterated register coalescing

This work shows how to interleave coloring reductions with Briggs's coalescing heuristic, leading to an algorithm that is safe but much more aggressive.

Using node merging to enhance graph coloring

This work enhances Chaitin's coloring algorithm so that it attempts node-merging during graph simplification; this often allows simplification to continue, while still guaranteeing a coloring for the graph.

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.

Register allocation via graph coloring

This thesis describes a series of improvements and extensions to the Yorktown allocator, describing many implementation details and including further measurements designed to provide an accurate intuition about the time and space requirements of coloring allocators.

Register allocation & spilling via graph coloring

This work has discovered how to extend the graph coloring approach so that it naturally solves the spilling problem, and produces better object code and takes much less compile time.

Register allocation and spilling via graph coloring

This work has discovered how to extend the graph coloring approach so that it naturally solves the spilling problem, and produces better object code and takes much less compile time.

Improvements to graph coloring register allocation

This paper describes two improvements to Chaitin-style graph coloring register allocators, and provides a detailed description of optimistic coloring and rematerialization, and presents experimental data to show the performance of several versions of the register allocator on a suite of FORTRAN programs.

The priority-based coloring approach to register allocation

The detailed algorithms for a priority-based coloring approach are presented and are contrasted with the basic graph-coloring algorithm and various extensions to the basic algorithms are also presented.

Register allocation via graph coloring

The basic idea behind register allocation via graph coloring is to reduce register spillage by globally assigning variables to registers across an entire program module via the five basic steps

Unroll-Based Copy Elimination for Enhanced Pipeline Scheduling

EPS's renaming through copies, followed by unrollbased copy elimination, provides a more general and simpler solution to the cross-iteration register overwrite problem in software pipelining which works for loops with control flows as well as for straight-line loops.