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: Alexandre Oliva <aoliva at redhat dot com>
- Cc: Joern Rennecke <joern dot rennecke at superh dot com>,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: Thu, 15 May 2003 21:27:21 +0200 (CEST)
- Subject: Re: new register allocator and HARD_REGNO_CALL_PART_CLOBBERED
Hi,
On 15 May 2003, Alexandre Oliva wrote:
> > namely that some register parts will be destroyed, instead of an
> > abstraction like HARD_REGNO_CALL_PART_CLOBBERED. At least for clobbers
> > which can change per call.
>
> Clobbering a subreg will still affects the entire register,
Yes, you have to define clobbering parts of hardregs. Possibly by
allowing clobbering of zero_extract's, or normal subregs.
> if BITS_PER_WORD is defined properly, so this is not an option.
> Besides, you don't want to pollute calls with clobbers, otherwise why
> would we have CALL_USED_REGISTERS in the first place?
And I had designed this half-clobbering exactly like CALL_USED_REGISTERS,
instead of creating the HARD_REGNO_CALL_PART_CLOBBERED macro which says
for a mode to not be placable into these and those hardregs over calls.
Well, whatever, I guess we have to live with this now.
I was also talking more about what you speculated about, namely that the
set of partly clobbered regs changes per call instruction. For that you
anyway have to tack something to those insns, like already can be done
with CALL_INSN_FUNCTION_USAGE. It just has to be extended to the notion
of partial hardregs.
Ciao,
Michael.