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.

Reply via email to