This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
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