This is the mail archive of the gcc-patches@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: add h8sx support to h8300


Alexandre Oliva <aoliva@redhat.com> writes:
> On Jul 14, 2004, Richard Sandiford <rsandifo@redhat.com> wrote:
>> Alexandre Oliva <aoliva@redhat.com> writes:
>>>> !       if (!regs_ever_live[HFP_REG])
>>>> ! 	return NO_REGS;
>>> 
>>> I had both HFP_REG and FP_REG at some point.  I thought this would
>>> minimize the risk of running into the failure case.  Don't you think
>>> so?
>
>> I wouldn't have thought checking for FP_REG was necessary.  It really is
>> the liveness of er6 that we're concerned about.
>
> Then I totally misunderstand what's going on.  I thought you were
> testing whether the frame pointer was used, not whether there was some
> random pseudo assigned to er6 by local or global.  Which is it?

The idea is that, if nothing is using er6, there's no reason why it
can't be allocated for a movmd.  The register allocators might normally
shy away from that because er6 is a call-saved register.  "Hey, I've got
this call-clobbered register sitting free.  Why not use that instead of
er6?".  Even '!' wasn't enough to convince them otherwise.

[ And that's not surprising really.  It's unusual to strongly prefer
  a call-saved register over a call-clobbered when a pattern offers
  both alternatives. ]

Of course, we don't have the same problem with er5 and er7 since we can
safely require 'f' and 'c' in all alternatives.  er6 is the odd one out
because we have to offer a 'D' alternative as well.

Richard


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