Le jeudi 06 janvier 2011 à 09:29 -0800, Richard Henderson a écrit :
> On 01/06/2011 06:58 AM, Frederic Riss wrote:
> > 136 is a pseudo. I have movdf and movsf patterns that accepts
> > constants.
> 
> This one statement is suspicious to me.  Do I read from this that
> you have fp move patterns that accept constants but not registers?

No , I was just pointing out that they don't reject constants because
the pattern in question was moving a constant.

> Move patterns are special in that they *must* handle everything,
> modulo some constants which reload can spill to memory.

Yes I learned that a few weeks ago while working on improving my
testsuite results (although this particular error was only causing a few
obscure failures in the C++ tests). 

> The other piece of advice that I can give from elsewhere in this
> thread is that you should never match or generate SUBREG by hand.
> You should always use the gen_lowpart, gen_highpart, simplify_gen_subreg
> interfaces.  Those will greatly simplify the double-subreg issues
> that you have been having.

Yeah, Ian pointed me at those. I'll update my code.

> Finally, do you actually have dedicated hard registers for fp?  If
> yours is a soft-fp target -- or one of the rare targets that does
> hard fp out of the general register set -- consider totally eliminating
> the fp move patterns.  Once upon a time gcc required them even for
> soft-fp, but we've gotten much better with introduction of the
> lower-subreg pass.  Not that too many existing ports have been updated
> for that pass, leading others to conclude that the patterns are still
> required...

This is quite interesting. I'll remove the patterns and see what
happens. Thanks for all the advice!

Fred


Reply via email to