Re: coalescing in graph coloring register allocator

Max Hailperin <max@gac.edu>
4 Aug 1998 22:17:08 -0400

          From comp.compilers

Related articles
coalescing in graph coloring register allocator jp@altair.snu.ac.kr (jp) (1998-08-03)
Re: coalescing in graph coloring register allocator max@gac.edu (Max Hailperin) (1998-08-04)
Re: coalescing in graph coloring register allocator cliff.click@Eng.Sun.COM (Clifford Click) (1998-08-05)
Re: coalescing in graph coloring register allocator george@research.bell-labs.com (Lal George) (1998-08-10)
Re: coalescing in graph coloring register allocator cliff.click@Eng.Sun.COM (Clifford Click) (1998-08-13)
Re: coalescing in graph coloring register allocator george@research.bell-labs.com (Lal George) (1998-08-16)
Re: coalescing in graph coloring register allocator cliff.click@Eng.Sun.COM (Clifford Click) (1998-08-19)
| List of all articles for this month |

From: Max Hailperin <max@gac.edu>
Newsgroups: comp.compilers
Date: 4 Aug 1998 22:17:08 -0400
Organization: Compilers Central
References: 98-08-021
Keywords: analysis, registers

jp <jp@altair.snu.ac.kr> writes:


> I'm studying the graph coloring register allocator. I'm wondering
> which coalescing technique out of "aggressive coalescing" by Chaitin
> and "conservative coalescing" by Briggs is preferred in general
> environments that suffer from many copies generated by aggressive
> optimizations like SSA as well as generated at normal compilation
> stages.


In his thesis work[1], Briggs actually used agressive coalescing, just
like Chaitin, for the normal case of pre-existing copies, such as
those from SSA form. He used his conservative coalsescing only for
the special case of eliminating the extra copies his allocator
introduced in order to split live ranges. If he had used aggressive
coalescing there as well, it would have immediately undone all the
splitting.


Later George and Appel[2] eliminated agressive coalescing entirely
(because it was overconstraining coloring in their compiler), and
instead used exclusively conservative coalescing. (However, they used
a different "conservativeness" test for copies involving precolored
nodes.) What they discovered was that they were left with too many
copies, if they did all the coalescing before the graph simplification
started, a la Chaitin and Briggs. They showed that by intermixing
conservative coalescing with simplification, however, they were able
to get much better results -- some coalesces which weren't initially
conservative became conservative after some simplification was done.


This doesn't really answer your question, it just tells you that your
statement of the question was a bit oversimplified.


[1] Briggs, P., 1992.
        Register allocation via graph coloring.
        Tech. Rep. CRPC-TR92218
        Center for Research on Parallel Computation, Rice University.
        Ph.D. Dissertation.


[2] George, L. and Appel, A. W., 1996.
        Iterated register coalescing.
        ACM Trans. Program. Lang. Syst. 18, 3 (May), 300-324.


  -Max Hailperin
    Associate Professor of Computer Science
    Gustavus Adolphus College
    800 W. College Ave.
    St. Peter, MN 56082
    USA
    http://www.gustavus.edu/~max/
--


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.