From 28f6d3af8c674b712dc5fc61972251209c4a47ee Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Fri, 1 May 1992 06:32:59 -0400 Subject: [PATCH] *** empty log message *** From-SVN: r864 --- gcc/combine.c | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/gcc/combine.c b/gcc/combine.c index ade79cb9277..8db1fb9fef1 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -8054,14 +8054,33 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1) if (! refers_to_regno_p (i, i + 1, PATTERN (place), 0)) { rtx piece = gen_rtx (REG, word_mode, i); - rtx use_insn - = emit_insn_before (gen_rtx (USE, VOIDmode, piece), - place); + rtx p; + + /* See if we already placed a USE note for this + register in front of PLACE. */ + for (p = place; + GET_CODE (PREV_INSN (p)) == INSN + && GET_CODE (PATTERN (PREV_INSN (p))) == USE; + p = PREV_INSN (p)) + if (rtx_equal_p (piece, + XEXP (PATTERN (PREV_INSN (p)), 0))) + { + p = 0; + break; + } + + if (p) + { + rtx use_insn + = emit_insn_before (gen_rtx (USE, VOIDmode, + piece), + p); + REG_NOTES (use_insn) + = gen_rtx (EXPR_LIST, REG_DEAD, piece, + REG_NOTES (use_insn)); + } all_used = 0; - REG_NOTES (use_insn) - = gen_rtx (EXPR_LIST, REG_DEAD, piece, - REG_NOTES (use_insn)); } if (! all_used) -- 2.30.2