https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96791
acsawdey at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|unassigned at gcc dot gnu.org |acsawdey at gcc dot gnu.org --- Comment #5 from acsawdey at gcc dot gnu.org --- Nope, this is my patch that added vector pair to memcpy/memmove expansion. We apparently don't have the right patterns defined for this to extract things from the POImode reg that it uses. This is the code in expr.c: if (GET_MODE_CLASS (from_mode) == MODE_PARTIAL_INT) { rtx new_from; scalar_int_mode full_mode = smallest_int_mode_for_size (GET_MODE_BITSIZE (from_mode)); convert_optab ctab = unsignedp ? zext_optab : sext_optab; enum insn_code icode; icode = convert_optab_handler (ctab, full_mode, from_mode); gcc_assert (icode != CODE_FOR_nothing); convert_optab_handler doesn't find anything to go from POImode to DImode, so the assert fires.