This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: condition codes, haifa-sched and virtual-stack-vars
- From: Ulrich Weigand <weigand at immd1 dot informatik dot uni-erlangen dot de>
- To: geoffk at geoffk dot org (Geoff Keating)
- Cc: weigand at immd1 dot informatik dot uni-erlangen dot de (Ulrich Weigand), gcc at gcc dot gnu dot org
- Date: Thu, 31 Jan 2002 00:16:59 +0100 (MET)
- Subject: Re: condition codes, haifa-sched and virtual-stack-vars
Geoff Keating wrote:
> Ulrich Weigand <weigand@immd1.informatik.uni-erlangen.de> writes:
>
> > The problem is that reload simply calls gen_add2_insn whenever it
> > feels like it, without consideration that this might introduce
> > a CC clobber at an inappropriate point ...
>
> On xstormy16, this problem existed with the carry register. I believe
> it was fixed by having a reload_inhi pattern and an appropriate
> definition of SECONDARY_RELOAD_CLASS. The result appears to work.
This is interesting, but I'm not sure I understand *why* it works ;-)
The reload_inhi pattern tries to allocate the carry register as the
secondary reload scratch register. Now, in the interesting case
where the carry register is in fact live at the location where the
insn is inserted, this would mean that reload would need to spill
the carry register and later on restore its old value, right?
(Because there is only a single register in this class ...)
However, I'm not sure how the carry register can be spilled,
given that there is no mov* insn that touches it, unless I'm
missing something ...
Bye,
Ulrich
--
Dr. Ulrich Weigand
weigand@informatik.uni-erlangen.de