/* Adjust PTR, TO and REM. Since TO's address is likely
PTR+offset, we have to replace it. */
- emit_move_insn (ptr, XEXP (to, 0));
+ emit_move_insn (ptr, force_operand (XEXP (to, 0), NULL_RTX));
to = replace_equiv_address (to, ptr);
- emit_move_insn (rem, plus_constant (ptr_mode, rem, -blksize));
+ rtx rem_minus_blksize = plus_constant (ptr_mode, rem, -blksize);
+ emit_move_insn (rem, force_operand (rem_minus_blksize, NULL_RTX));
}
/* Iterate over power-of-two block sizes from the maximum length to
/* Adjust REM and PTR, unless this is the last iteration. */
if (i != sctz_len)
{
- emit_move_insn (ptr, XEXP (to, 0));
+ emit_move_insn (ptr, force_operand (XEXP (to, 0), NULL_RTX));
to = replace_equiv_address (to, ptr);
- emit_move_insn (rem, plus_constant (ptr_mode, rem, -blksize));
+ rtx rem_minus_blksize = plus_constant (ptr_mode, rem, -blksize);
+ emit_move_insn (rem, force_operand (rem_minus_blksize, NULL_RTX));
}
if (label)