new register allocator and HARD_REGNO_CALL_PART_CLOBBERED
Michael Matz
matz@suse.de
Wed May 14 12:05:00 GMT 2003
Hi,
On Wed, 14 May 2003, Joern Rennecke wrote:
> > 2) this set can change for each call, i.e. depends on the actual call.
>
> It's not really the call that might be different, but if a different pseudo
> is tracked across a different call, you have to consider the mode of that
> other pseudo.
Sure sure. I just wanted to know if the set of forbidden regs could
possibly also depend on the call in question. Looking at the definition
of HARD_REGNO_CALL_PART_CLOBBERED() this is not possible. So it's enough
for a web to know its mode, and if it's live over a call. I.e. basically
it simply boiles down to a HARD_REG_SET of forbidden regs per machine
mode, which are to be excluded for live-over-call webs. So there's no
need to fiddle with the web builder to exactly track over _which_ calls a
web is live. That was the initial reason why I asked.
> This is relevant if you want to merge webs for different pseudos.
The usable_regs are intersected for merged webs. If the resulting set
would be too small (for instance empty) they aren't merged. So simply
limiting the usable_regs for the webs in question should already Just Work
(modulo bugs ;-) )
Ciao,
Michael.
More information about the Gcc
mailing list