DMCA
Improvements to Graph Coloring Register Allocation (1994)
Cached
Download Links
- [www.cs.rice.edu]
- [rw4.cs.uni-sb.de]
- [rw4.cs.uni-sb.de]
- [www.rw.cdl.uni-saarland.de]
- [www.cs.rice.edu]
- [rsim.cs.illinois.edu]
- DBLP
Other Repositories/Bibliography
Venue: | ACM Transactions on Programming Languages and Systems |
Citations: | 201 - 9 self |
Citations
14064 |
Computers and Intractability: A Guide to the Theory of NP-Completeness
- GAREY, JOHNSON
- 1982
(Show Context)
Citation Context ...t colors. If we choose k to match the number of machine registers, then we can map a k-coloring of G into a feasible register assignment for the underlying code. Because graph coloring is NP-complete =-=[21]-=-, the compiler uses a heuristic method to search for a coloring; it is not guaranteed to find a k-coloring for all k-colorable graphs. If a k-coloring is not discovered, some values are spilled; that ... |
1002 | Efficiently computing static single assignment form and the control dependence graph
- Cytron, Ferrante, et al.
- 1991
(Show Context)
Citation Context ...ring Values. To find values, we construct the procedure’s static single assignment (SSA) graph, a representation that transforms the code so that each use of a value references exactly one definitio=-=n [13].-=- To achieve this goal, the construction technique inserts special definitions called φ-nodes at those points where control-flow paths join and different values merge. We actually use the pruned SSA g... |
467 |
Register Allocation and Spilling via Graph Coloring.
- Chaitin
- 1982
(Show Context)
Citation Context ...roblems to graph coloring dates from the early 1960’s [28] (see Section 7). The first implementation of a graph coloring register allocator was done by Chaitin and his colleagues in the PL.8 compile=-=r [8, 6]-=-. Chow and Hennessy later described a priority-based scheme for allocation based on a coloring paradigm [10, 11]. Almost all subsequent work on coloring-based allocation has followed from one of these... |
354 | Constant propagation with conditional branches
- Wegman, Zadeck
- 1991
(Show Context)
Citation Context ...d values and propagate this information throughout the SSA graph. 4.1.2 Propagating Rematerialization Tags. To propagate tags, we use an analog of Wegman and Zadeck’s sparse simple constant algorith=-=m [33]. -=-2 We modify their lattice slightly to represent the necessary rematerialization information. The new lattice elements may have one of three types: ⊤ Top means that no information is known. A value d... |
287 |
Singular value decomposition and least squares solutions
- Golub, Reinsch
- 1970
(Show Context)
Citation Context ...es where it produced obviously flawed allocations. 3.1 A Motivating Problem A particularly interesting case arose in the code generated for the singular value decomposition (SVD) of Golub and Reinsch =-=[22]. -=-The actual code was from the software library distributed with Forsythe, Malcolm, and Moler’s book on numerical methods [18]. It has two hundred fourteen lines of code, excluding comments. The code ... |
211 |
Register allocation via coloring.
- Chaitin, Chandra, et al.
- 1981
(Show Context)
Citation Context ...d L. Torczon ping from values in the procedure to registers in the target machine; the mapping must observe the constraints. The first graph coloring allocator was built by Chaitin and his colleagues =-=[8]-=-. Another approach, called priority-based coloring, was described by Chow and Hennessy [10, 11]. These two techniques have formed the core around which a rich literature has emerged (see Section 7). T... |
172 |
The Priority-Based Coloring Approach to Register Allocation.
- Chow, Hennessy
- 1990
(Show Context)
Citation Context ...ping must observe the constraints. The first graph coloring allocator was built by Chaitin and his colleagues [8]. Another approach, called priority-based coloring, was described by Chow and Hennessy =-=[10, 11]-=-. These two techniques have formed the core around which a rich literature has emerged (see Section 7). The techniques used in building graph coloring allocators can be improved. In recent years, seve... |
155 | Register Allocation via Graph Coloring,
- Briggs
- 1992
(Show Context)
Citation Context ...a “splitting” allocator [11, 27, 23, 5]; the actual code might be worse. In fact, our work on rematerialization was motivated by problems observed during our own experiments with live range splitt=-=ing [3]-=-. Unfortunately, examples of this sort are not discussed in the literature on splitting allocators and it is unclear how best to extend these techniques to achieve the Ideal solution. This section div... |
145 |
Computer Methods for Mathematical Computations
- Forsythe, Malcolm, et al.
(Show Context)
Citation Context ...generated for the singular value decomposition (SVD) of Golub and Reinsch [22]. The actual code was from the software library distributed with Forsythe, Malcolm, and Moler’s book on numerical method=-=s [18]-=-. It has two hundred fourteen lines of code, excluding comments. The code contains thirty-seven DO-loops organized into five different loop nests. The first loop nest is a simple array copy; four larg... |
133 | The ParaScope parallel programming environment
- Cooper, Hall, et al.
- 1993
(Show Context)
Citation Context ...osts encode simple information about the control-flow graph. Any improvements to Chaitin’s work should retain these properties. 3. OPTIMISTIC COLORING As part of the ParaScope programming environmen=-=t [12], -=-we built an optimizing compiler for FORTRAN running on uniprocessors. The initial implementation included a register allocator that used Chaitin’s technique as described in Section 2. The allocator ... |
126 |
Automatic Construction of Sparse Data Flow Evaluation Graphs.
- Choi, Cytron, et al.
- 1991
(Show Context)
Citation Context ...ction technique inserts special definitions called φ-nodes at those points where control-flow paths join and different values merge. We actually use the pruned SSA graph, with dead φ-nodes eliminate=-=d [9]. A-=-CM Transactions on Programming Languages and Systems, Vol. 16, No. 3, May 1994, pp. 428–455. ?sImprovements to Graph Coloring Register Allocation · 11 A natural way to view the SSA graph for a proc... |
116 |
Register allocation by priority-based coloring
- Chow, Hennessy
- 1984
(Show Context)
Citation Context ...ping must observe the constraints. The first graph coloring allocator was built by Chaitin and his colleagues [8]. Another approach, called priority-based coloring, was described by Chow and Hennessy =-=[10, 11]-=-. These two techniques have formed the core around which a rich literature has emerged (see Section 7). The techniques used in building graph coloring allocators can be improved. In recent years, seve... |
103 | Register allocation via hierarchical graph coloring
- Callahan, Koblenz
- 1991
(Show Context)
Citation Context ... live range of p has been spilled to memory, with loads inserted before uses and stores inserted after definitions. Splitting. The final column shows code we would expect from a “splitting” alloca=-=tor [11, 27, 23, 5]-=-; the actual code might be worse. In fact, our work on rematerialization was motivated by problems observed during our own experiments with live range splitting [3]. Unfortunately, examples of this so... |
85 |
Smallest-last ordering and clustering and graph coloring algorithms.
- Matula, Beck
- 1983
(Show Context)
Citation Context ...p. Similarly, the allocator cannot retract the decisions later. Once spilled, a live range stays spilled. The coloring heuristic explored by Matula and Beck finds a two-coloring for the diamond graph =-=[29]. Th-=-eir algorithm differs only slightly from Chaitin’s approach. To simplify the graph, they repeatedly remove the node of smallest current degree, versus Chaitin’s approach of removing any node n whe... |
75 | Spill Code Minimization Techniques for Optimizing Compilers
- Bernstein, Goldin, et al.
- 1989
(Show Context)
Citation Context ...ature has emerged (see Section 7). The techniques used in building graph coloring allocators can be improved. In recent years, several important extensions to Chaitin's basic techniques have appeared =-=[2, 28]-=-. Nevertheless, problems remain. In practice, most of these problems appear as either over-spilling or a poor spill choice. In the former case, the allocator fails to keep some value in a register, ev... |
69 | A retargetable compiler for ANSI
- Fraser, Hanson
- 1991
(Show Context)
Citation Context ...s appeared much slower on very small routines, but much faster on very large routines [3]. Of course, these speeds are not competitive with the fast, local techniques used in non-optimizing compilers =-=[19, 20]-=-; however, we believe that global optimizations require global register allocation. 6. IMPLEMENTATION INSIGHT To perform the experiments described in Section 5, we implemented several versions of our ... |
47 |
Automatic storage optimization
- Fabri
- 1979
(Show Context)
Citation Context ...and try to color them independently. Fabri, in the context of her work on minimizing memory storage requirements, introduces a renaming transformation that is analogous to Chow’s live range splittin=-=g [16]. Sh-=-e notes that, in some cases, splitting improved the resulting coloring. She mentions the idea’s applicability to register allocation problems. Several groups have refined Chow’s approach. Larus an... |
38 |
Probabilistic register allocation
- Proebsting, Fischer
- 1992
(Show Context)
Citation Context ...locators are built on the graph coloring paradigm. Other approaches include the bin-packing allocators built by Digital Equipment Corporation and the probabilistic allocator of Fischer and Proebsting =-=[1, 17]-=-. It is difficult to compare these techniques because the implementations work on different intermediate representations, they follow different optimizers, and the compilers target different machines.... |
35 | Register Allocation Via Clique Separators
- Gupta, Soffa, et al.
- 1989
(Show Context)
Citation Context ... live range of p has been spilled to memory, with loads inserted before uses and stores inserted after definitions. Splitting. The final column shows code we would expect from a “splitting” alloca=-=tor [11, 27, 23, 5]-=-; the actual code might be worse. In fact, our work on rematerialization was motivated by problems observed during our own experiments with live range splitting [3]. Unfortunately, examples of this so... |
22 | Coloring register pairs
- Briggs, Cooper, et al.
- 1992
(Show Context)
Citation Context ...an extra trip around the main loop for spill code insertion. In another paper, we have shown that optimistic allocators generate better allocations on machines that use register pairs for some values =-=[4]-=-. Any implementation of a Chaitin-style allocator should incorporate this improvement; it makes a significant difference in the allocation quality at little or no cost. Our method of rematerializing n... |
22 |
Register Allocation in the SPUR Lisp Compiler
- Laras, Hilfinger
- 1986
(Show Context)
Citation Context ...e live range of p has been spilled to memory, with loads inserted before uses and stores inserted after definitions. Splitting The final column shows code we would expect from a "splitting" =-=allocator [11, 25, 21, 5]-=-; the actual code might be worse. In fact, our work on rematerialization was motivated by problems observed during our own experiments with live range splitting [3]. Unfortunately, examples of this so... |
21 |
Effectiveness of a machine-level, global optimizer
- Johnson, Miller
- 1986
(Show Context)
Citation Context ...problem. (In the papers on the PL.8 compiler, this analysis is called “getting the right number of names”[8]. The Hewlett-Packard Precision Architecture compiler papers refer to this as “web ana=-=lysis”[25]-=-.) (2) Build constructs the interference graph. Our implementation closely follows the published descriptions of the PL.8 allocator [8, 6]. The interference graph is simultaneously represented as a bi... |
18 |
Graph coloring register allocation for processors with multiregister operands
- Nickerson
- 1990
(Show Context)
Citation Context ...ature has emerged (see Section 7). The techniques used in building graph coloring allocators can be improved. In recent years, several important extensions to Chaitin’s basic techniques have appeare=-=d [2, 30]-=-. Nevertheless, problems remain. In practice, most of these problems appear as either over-spilling or a poor spill choice. In the former case, the allocator fails to keep some value in a register, ev... |
17 |
On programming: An interim report on the setl project
- Schwartz
- 1973
(Show Context)
Citation Context ... packing algorithm on it [14, 15]. By the late sixties, Cocke was clearly talking about applying these insights directly to register allocation; both Kennedy and Schwartz credit him with this insight =-=[26, 31]-=-. This early work on graph coloring register allocation emphasizes the coloring problem with little consideration for the questions of spill choice and placement. Algorithms by Cocke and Ershov (as re... |
14 | Simple Register Spilling in a Retargetable Compiler. SPE,
- Fraser, Hanson
- 1992
(Show Context)
Citation Context ...s appeared much slower on very small routines, but much faster on very large routines [3]. Of course, these speeds are not competitive with the fast, local techniques used in non-optimizing compilers =-=[19, 20]-=-; however, we believe that global optimizations require global register allocation. 6. IMPLEMENTATION INSIGHT To perform the experiments described in Section 5, we implemented several versions of our ... |
8 | Register allocation - Larus, Hilfinger - 1986 |
7 |
Al~ha-:An Automatic Programming System of High Efficiency
- Ershov
- 1956
(Show Context)
Citation Context ...or finding a coloring. Ershov and his colleagues built on this work in the ALPHA project. They solved storage allocation problems by building an interference graph and using a packing algorithm on it =-=[14, 15]-=-. By the late sixties, Cocke was clearly talking about applying these insights directly to register allocation; both Kennedy and Schwartz credit him with this insight [26, 31]. This early work on grap... |
7 |
Store economy in closed operator schemes
- Lavrov
(Show Context)
Citation Context ...Finally, section 7 presents a discussion of related work. 2. REGISTER ALLOCATION VIA GRAPH COLORING The notion of abstracting storage allocation problems to graph coloring dates from the early 1960’=-=s [28]-=- (see Section 7). The first implementation of a graph coloring register allocator was done by Chaitin and his colleagues in the PL.8 compiler [8, 6]. Chow and Hennessy later described a priority-based... |
5 |
Reduction of the problem of memory allocation in programming to the problem of coloring the vertices of graphs
- Ershov
- 1962
(Show Context)
Citation Context ...or finding a coloring. Ershov and his colleagues built on this work in the ALPHA project. They solved storage allocation problems by building an interference graph and using a packing algorithm on it =-=[14, 15]-=-. By the late sixties, Cocke was clearly talking about applying these insights directly to register allocation; both Kennedy and Schwartz credit him with this insight [24, 29]. This early work on grap... |
2 |
Private communication. Conversation during visit to Rice
- Hopkins
- 1991
(Show Context)
Citation Context ...tion of this technique in the back-end of the IBM XL compiler family for the RS/6000 architecture resulted in a decrease of about twenty percent in estimated spill costs over the SPEC benchmark suite =-=[24]-=-. 4. REMATERIALIZATION Even with optimistic coloring, the allocator must spill some live ranges. When this happens, the allocator should choose the least expensive mechanism to accomplish the spill. I... |
2 |
Global Flow Analysis and Register Allocation for Simple Code Structures
- Kennedy
- 1971
(Show Context)
Citation Context ... packing algorithm on it [14, 15]. By the late sixties, Cocke was clearly talking about applying these insights directly to register allocation; both Kennedy and Schwartz credit him with this insight =-=[26, 31]-=-. This early work on graph coloring register allocation emphasizes the coloring problem with little consideration for the questions of spill choice and placement. Algorithms by Cocke and Ershov (as re... |
1 |
Engineering a Compiler: VAX-11 Code Generation and Optimization
- Anklam, Cutler, et al.
- 1982
(Show Context)
Citation Context ...locators are built on the graph coloring paradigm. Other approaches include the bin-packing allocators built by Digital Equipment Corporation and the probabilistic allocator of Fischer and Proebsting =-=[1, 17]-=-. It is difficult to compare these techniques because the implementations work on different intermediate representations, they follow different optimizers, and the compilers target different machines.... |
1 |
Spill code minimization techniquesfor optimizing compilers
- Bernstein, Goldin, et al.
- 1989
(Show Context)
Citation Context ...ature has emerged (see Section 7). The techniques used in building graph coloring allocators can be improved. In recent years, several important extensions to Chaitin’s basic techniques have appeare=-=d [2, 30]-=-. Nevertheless, problems remain. In practice, most of these problems appear as either over-spilling or a poor spill choice. In the former case, the allocator fails to keep some value in a register, ev... |
1 |
Register allocation and spilling via graph coloring. United States Patent 4,571,678
- Chaitin
- 1986
(Show Context)
Citation Context ...de is invoked if simplify decides to spill a node. Each spilled live range is converted into a collection of tiny live ranges by inserting loads before uses and stores after definitions, as required. =-=(7)-=- Select assigns colors to the nodes of the graph in the order determined by simplify. It repeats the following steps until the stack is empty: (a) pop a live range from the stack, (b) insert its corre... |
1 |
Reduction of the problemof memory allocationin programming to the problem of coloring the vertices of graphs
- Ershov
- 1962
(Show Context)
Citation Context ...or finding a coloring. Ershov and his colleagues built on this work in the ALPHA project. They solved storage allocation problems by building an interference graph and using a packing algorithm on it =-=[14, 15]-=-. By the late sixties, Cocke was clearly talking about applying these insights directly to register allocation; both Kennedy and Schwartz credit him with this insight [26, 31]. This early work on grap... |
1 |
allocationin the SPUR Lisp compiler
- Larus, Hilfinger
- 1986
(Show Context)
Citation Context ... live range of p has been spilled to memory, with loads inserted before uses and stores inserted after definitions. Splitting. The final column shows code we would expect from a “splitting” alloca=-=tor [11, 27, 23, 5]-=-; the actual code might be worse. In fact, our work on rematerialization was motivated by problems observed during our own experiments with live range splitting [3]. Unfortunately, examples of this so... |
1 |
Alpha -- an automatic programming system of high efficiency
- P
- 1966
(Show Context)
Citation Context ...or finding a coloring. Ershov and his colleagues built on this work in the ALPHA project. They solved storage allocation problems by building an interference graph and using a packing algorithm on it =-=[14, 15]-=-. By the late sixties, Cocke was clearly talking about applying these insights directly to register allocation; both Kennedy and Schwartz credit him with this insight [24, 29]. This early work on grap... |
1 | Engmeermg a CompLler: VAX-11 Code Generation and Optlm ZzatLon. D@tal - ANKLAM, CUTLER, et al. - 1982 |
1 | Coloring register pares - BRIGGS, CooPzm, et al. - 1992 |
1 | Re~ster allocation vla hierarchical graph coloring - CALLAHAN, KOBLENZ - 1991 |
1 | Register allocation via coloring - W - 1981 |
1 | on Programmmg Languages and Systems, Vol 16, No 3 - CHOW, HENNESSY - 1994 |
1 | The ParaScope parallel programming environment - K - 1993 |
1 | Computers and Intractabdzty: A Guide to the Theory of NP - GAREY, JOHNSON - 1979 |
1 | Release 1.2, Standards Performance Evaluation - SPEC - 1990 |