diff --git a/gcc/reload1.c b/gcc/reload1.c index 261be0540ee..6175b3c42b3 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -3001,7 +3001,9 @@ eliminate_regs_in_insn (insn, replace) things can go wrong if find_reload swaps commutative operands and one is inside RTL that has been copied while the other is not. */ - if (! replace) + /* Don't copy an asm_operands because (1) there's no need and (2) + copy_rtx can't do it properly when there are multiple outputs. */ + if (! replace && asm_noperands (new_body) < 0) new_body = copy_rtx (new_body); /* If we had a move insn but now we don't, rerecognize it. */