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



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.



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