doloop insn generated incorrectly (wrong mode)
Segher Boessenkool
segher@kernel.crashing.org
Thu Oct 11 07:11:00 GMT 2018
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
More information about the Gcc
mailing list