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: PR 6394


> 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>


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