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