new register allocator and HARD_REGNO_CALL_PART_CLOBBERED

Daniel Berlin dberlin@dberlin.org
Tue May 13 20:15:00 GMT 2003


On Tuesday, May 13, 2003, at 03:51  PM, Michael Matz wrote:

> Hi,
>
> excuse me for coming to this thread so late.  It started while I was on
> vacation, and then I missed that some mails were added to it during the
> last days.
>
> I want to ensure that I understand the problem correctly, so please
> correct me if I'm wrong.
>
> The problem is, that some hardregs are not allowed for pseudos live
> over calls, i.e. a subset of the caller-saved-regs-problem, _but_:
>  1) this set depends on the mode of the actual pseudo, and
>  2) this set can change for each call, i.e. depends on the actual call.
>
> Is that correct so far?
>
>
Yup.
It means usable regs isn't always right anymore, breaking that 
invariant.
So I proposed that it's wrong to make the new-register-allocator try to 
figure this out in get_free_reg, and that we shouldn't be handed 
classes (which we convert into usable_regs) that contain invalid 
registers.
Alternatively, since i know this won't ever happen until web_class is 
the default, I sent a patch to prune the hard regs of usable_regs using 
the web's call crossing information.
This avoids having to assume clobbers in df.c on all possible 
combinations.

> Ciao,
> Michael.
>



More information about the Gcc mailing list