Hi!

On Wed, Oct 10, 2018 at 08:55:12PM -0400, Paul Koning wrote:

[ snip ]

> Note that this isn't permitted by the .md file -- the mode is wrong (QI not 
> HI).

Other targets use an expander and check the mode explicitly in there.  See
rs6000 or sh for example.

> It's not obvious to me how that relates to the wrong insn generated by the 
> compiler, but clearly it can't be good to have something that won't match 
> when it's time to generate the output code.  It seems to me that the doloop 
> convertor should be checking the doloop_end pattern to make sure the mode 
> matches, and not apply it unless it does.  
> 
> Why is this happening, and how can I fix it (short of removing the doloop_end 
> pattern)?  I see a comment in loop-doloop.c about handling a FAIL of the 
> pattern -- am I going to have to check that the wrong mode is being passed in 
> and FAIL if so?

That is exactly what other targets do.  Maybe you can improve doloop so
this isn't necessary anymore?  :-)


Segher

Reply via email to