https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90327

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|2019-05-03 00:00:00         |2019-05-06
                 CC|                            |matz at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.

We're emitting a partition copy from

(mem/c:BLK (plus:DI (reg/f:DI 55 virtual-stack-vars)
        (const_int -4 [0xfffffffffffffffc])) [2 n+0 S4 A32])

to

(reg:V1SF 61)

We don't seem to expect this looking at emit_partition_copy, which
just expects a BLKmode/BLKmode combo but not a mixed case.

/* Emit insns to copy SRC into DEST converting SRC if necessary.  As
   SRC/DEST might be BLKmode memory locations SIZEEXP is a tree from
   which we deduce the size to copy in that case.  */

static inline rtx_insn *
emit_partition_copy (rtx dest, rtx src, int unsignedsrcp, tree sizeexp)
{
  start_sequence ();

  if (GET_MODE (src) != VOIDmode && GET_MODE (src) != GET_MODE (dest))
    src = convert_to_mode (GET_MODE (dest), src, unsignedsrcp);
  if (GET_MODE (src) == BLKmode)
    {
      gcc_assert (GET_MODE (dest) == BLKmode);
      emit_block_move (dest, src, expr_size (sizeexp), BLOCK_OP_NORMAL);
    }

Reply via email to