This is the mail archive of the gcc@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]

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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]