On Sat, Jan 18, 2014 at 10:37:18AM +0000, Richard Sandiford wrote: > Review ping for this patch. IMO it almost counts as obviously correct > but just in case... > > Kito Cheng <k...@0xlab.org> writes: > > expand_movstr is work fine when we don't define movstr pattern or > > always expand it successfully, however it's will crash when if movstr > > expand fail since expand_insn expect always expand successfully (it's > > place a gcc_unreachable() when expand fail). > > > > this patch use maybe_expand_insn instead of expand_insn, check it done > > or not and just return NULL_RTX for generate a libcall if fail to > > expand movstr. > > > > 2014-01-11 Kito Cheng <k...@0xlab.org> > > > > * gcc/builtins.c (expand_movstr): Check movstr expand done or fail.
Ok. > > --- a/gcc/builtins.c > > +++ b/gcc/builtins.c > > @@ -3239,7 +3239,8 @@ expand_movstr (tree dest, tree src, rtx target, int > > endp) > > create_output_operand (&ops[0], endp ? target : NULL_RTX, Pmode); > > create_fixed_operand (&ops[1], dest_mem); > > create_fixed_operand (&ops[2], src_mem); > > - expand_insn (CODE_FOR_movstr, 3, ops); > > + if (!maybe_expand_insn (CODE_FOR_movstr, 3, ops)) > > + return NULL_RTX; > > > > if (endp && target != const0_rtx) > > { Jakub