From 05c33dd84f1492e862012cad8b1e371d617a82bf Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Fri, 29 May 1992 06:44:10 -0400 Subject: [PATCH] *** empty log message *** From-SVN: r1120 --- gcc/cse.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gcc/cse.c b/gcc/cse.c index dc7096b2c10..4a51d422179 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -5754,7 +5754,7 @@ cse_insn (insn, in_libcall_block) possibilities. Prefer items not in the hash table to ones that are when they are equal cost. Note that we can never worsen an insn as the current contents will also succeed. - If we find an equivalent identical to the source, use it as best, + If we find an equivalent identical to the destination, use it as best, since this insn will probably be eliminated in that case. */ if (src) { @@ -5829,7 +5829,7 @@ cse_insn (insn, in_libcall_block) trial = src_related, src_related_cost = 10000; else { - trial = canon_reg (copy_rtx (elt->exp), 0); + trial = copy_rtx (elt->exp); elt = elt->next_same_value; src_elt_cost = 10000; } @@ -5866,7 +5866,10 @@ cse_insn (insn, in_libcall_block) /* Look for a substitution that makes a valid insn. */ else if (validate_change (insn, &SET_SRC (sets[i].rtl), trial, 0)) - break; + { + SET_SRC (sets[i].rtl) = canon_reg (SET_SRC (sets[i].rtl), insn); + break; + } /* If we previously found constant pool entries for constants and this is a constant, try making a -- 2.30.2