This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: PR 6394
- From: Geoff Keating <geoffk at geoffk dot org>
- To: dave at hiauly1 dot hia dot nrc dot ca
- Cc: dje at watson dot ibm dot com, gcc at gcc dot gnu dot org
- Date: Tue, 30 Apr 2002 13:22:38 -0700
- Subject: Re: PR 6394
- References: <200204302007.g3UK7DeK000134@hiauly1.hia.nrc.ca>
- Reply-to: Geoff Keating <geoffk at redhat dot com>
> Date: Tue, 30 Apr 2002 16:07:12 -0400 (EDT)
> From: "John David Anglin" <dave@hiauly1.hia.nrc.ca>
> Cc: geoffk@geoffk.org, gcc@gcc.gnu.org
> X-OriginalArrivalTime: 30 Apr 2002 20:08:12.0152 (UTC) FILETIME=[C13D4F80:01C1F082]
>
> > >>>>> Geoff Keating writes:
> >
> > Geoff> Did you work out _why_ reg-alloc was chosing this class (and which
> > Geoff> class it was choosing)? Often these problems are actually caused by
> > Geoff> the machine description, for instance by not having the union of two
> > Geoff> register classes available, and a new register allocator won't help
> > Geoff> that.
> >
> > For the PowerPC case, DImode is allowed in FPRs. A loop was
> > generated with a pseudo that was used as an FP value elsewhere. The
> > register allocator could not be discouraged from using the FPR and could
> > not split the variable across two different register classes.
>
> DImode is also allowed in FPRs on the PA. The class used by global_alloc
> for the pseudo was GENERAL_OR_FP_REGS. This was the first class selected
> for the psuedo and a register %fr22 was selected from this class.
Hmmm. It should have been 'GENERAL_OR_FP_REGS, pref GENERAL_REGS',
because although FP_REGS is OK, GENERAL_REGS is cheaper (there are
fewer moves). Perhaps a cost macro needs tweaking?
--
- Geoffrey Keating <geoffk@geoffk.org> <geoffk@redhat.com>