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