This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: new register allocator and HARD_REGNO_CALL_PART_CLOBBERED
- From: Michael Matz <matz at suse dot de>
- To: Joern Rennecke <joern dot rennecke at superh dot com>
- Cc: Daniel Berlin <dberlin at dberlin dot org>,Herman ten Brugge <hermantenbrugge at home dot nl>,Dale Johannesen <dalej at apple dot com>, <gcc at gcc dot gnu dot org>
- Date: Wed, 14 May 2003 14:05:28 +0200 (CEST)
- Subject: Re: new register allocator and HARD_REGNO_CALL_PART_CLOBBERED
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.