Re: optimization and register allocation

preston@tera.com (Preston Briggs)
Mon, 6 Mar 1995 18:08:53 GMT

          From comp.compilers

Related articles
optimization and register allocation sastry@GODEL.MIEL.MOT.COM (1995-02-24)
Re: optimization and register allocation davidm@Rational.COM (1995-02-28)
Re: optimization and register allocation sethml@puree.ugcs.caltech.edu (1995-03-04)
Re: optimization and register allocation preston@tera.com (1995-03-06)
| List of all articles for this month |

Newsgroups: comp.compilers
From: preston@tera.com (Preston Briggs)
Keywords: optimize, registers
Organization: /etc/organization
References: 95-02-182 95-03-009
Date: Mon, 6 Mar 1995 18:08:53 GMT

davidm@Rational.COM (David Moore) writes:
>I have heard it said that live range splitting is not usually
>worth the expense. How true is this?


I spent a couple of years experimenting with ways to do live range
splitting in the context of Chaitin's allocator. I tried several
approaches, but the results were not consistent; that is, for some
routines I got great results (big reductions in spill overhead), but
other routines would get worse. Note that allocation time wasn't a
problem; instead, spill overhead (including all the register-register
copies) was the basic bottleneck.


Actually, I had good results with the rematerialization work, which is
sort of a special case of splitting.


A lot of my ideas are described in my thesis (if you want to know what
to avoid :-) There's also a brief note describing a basic flaw in my
implementation that perhaps incorrectly prejudiced my results
_against_ splitting.


Others (e.g., Chow & Hennessy and Callahan & Koblenz) are much happier
with their splitting allocators. Indeed, we use Callahan & Koblenz
at Tera.


>Has anyone investigated doing splitting
>only in response to register pressure, or only for values
>that are dead in loops but would be in registers there?


Chow & Hennessy split only in response to register pressure.


In the 2nd part of your question, I assume you mean "values that are
live across a loop, but never referenced or defined in the loop." I
tried it, and some variations, and never got consistent results. But
this was all in the context of Chaitin's allocator. Chow & Hennessy
and Callahan & Koblenz take advantage of this sort of situation.


Preston Briggs
--


Post a followup to this message

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