Matthew Fortune <matthew.fort...@imgtec.com> writes:
>> Matthew Fortune <matthew.fort...@imgtec.com> writes:
>> > I'm still interested in how successfully the MIPS backend is managing
>> > to avoid floating point but I am also convinced there are bugs in
>> > ld.so entry points for MIPS.
>> 
>> It uses the standard mechanism to avoid it, which is marking uses of FP
>> registers for integer moves, loads and stores with "*".  This tells
>> the register
>> allocator to ignore those alternatives.  AFAIK it is effective and I think 
>> any
>> cases where it doesn't work would be fair bug reports.
>
> I understand that '*' has no effect on whether reload/LRA will use the
> alternative though so I take that to mean they could still allocate FP
> regs as part of an integer move?

No, they shouldn't.  Admittedly the mechanism for reload is a bit indirect:
the GPR alternatives have priority and there is no GPR-and-FPR register
class that could be used to sum up separate "d" and "*f" alternatives.
It should be effective though.  There too I think any case where it
didn't work would be a bug.

ISTR LRA handles reloads by generating reload pseudos.  IMO it should
never do that for a '*' class, since that's tantamount to allocating
a pseudo to that class.  I haven't checked whether LRA enforces that
or not though.

Thanks,
Richard

Reply via email to