diff options
Diffstat (limited to 'gcc/postreload-gcse.c')
-rw-r--r-- | gcc/postreload-gcse.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/postreload-gcse.c b/gcc/postreload-gcse.c index 03b054a..264e030 100644 --- a/gcc/postreload-gcse.c +++ b/gcc/postreload-gcse.c @@ -1008,10 +1008,11 @@ eliminate_partially_redundant_load (basic_block bb, rtx_insn *insn, /* Make sure we can generate a move from register avail_reg to dest. */ - extract_insn (as_a <rtx_insn *> ( - gen_move_insn (copy_rtx (dest), - copy_rtx (avail_reg)))); - if (! constrain_operands (1) + rtx_insn *move = as_a <rtx_insn *> + (gen_move_insn (copy_rtx (dest), copy_rtx (avail_reg))); + extract_insn (move); + if (! constrain_operands (1, get_preferred_alternatives (insn, + pred_bb)) || reg_killed_on_edge (avail_reg, pred) || reg_used_on_edge (dest, pred)) { |