This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Tue, 2004-04-20 at 22:27, Daniel Berlin wrote:
On Apr 20, 2004, at 9:26 PM, Richard Kenner wrote:
Which of course, is just one more thing reload *shouldn't* be doing (inReload is effectively spill code generation for us. This is changing a decision on *what to spill*, not *how to spill it*. Thus, it belongs in the register allocator, not reload.
Except that reload currently decides which hard registers to allocate as spill registers, so it's involved in that decision already.
the general case. It is impossible to avoid currently in some cases,
given the way our backend is structured)
However, my objection is that we don't want to be making global
allocation decisions, then undoing them later, when we could just do
them right the first time, and not undo them. We also shouldn't be
making reload do more, we should be making it do less.
I'll say no more on the issue, since it's likely i'll be overruled
anyway, and the right way to do register allocation is among one of the
easiest topics to generate arguments about.
I've said my piece.
I'll also add my two cents :-)
I personally like/prefer the model of global colouring allocator running, then a specialized local allocator doing the spill code.
In order to do global allocation in a single iteration the local spill
code allocator has to be able to spill a pseudo previously allocated to
a hardware register at the local level. (just for a short duration, so
its not undoing global decisions, just releaving the pressure at the
worst points) I like to refer to this as spilling a hardware register
:-) These are the points in the function which would normally cause the
global allocator to iterate.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |