From: Jakub Jelinek Date: Mon, 10 Jun 2002 22:12:08 +0000 (+0200) Subject: re PR rtl-optimization/6759 (ice when compiling 32 bit sparc code) X-Git-Tag: releases/gcc-3.1.1~171 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9b81c803fdc8d928ac75217bc9c6295af0f48c66;p=thirdparty%2Fgcc.git re PR rtl-optimization/6759 (ice when compiling 32 bit sparc code) PR optimization/6759 * cse.c (cse_insn): Fold src_eqv just once, store it folded back into the REQ_EQUAL note. * g++.dg/opt/cse1.C: New test. From-SVN: r54471 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index eed9043517ff..9439d78e61c9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2002-06-10 Jakub Jelinek + + PR optimization/6759 + * cse.c (cse_insn): Fold src_eqv just once, store it folded back into + the REQ_EQUAL note. + 2002-06-10 Jakub Jelinek PR c/6660 diff --git a/gcc/cse.c b/gcc/cse.c index 0ac44c52d83a..65f4542f02d0 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -4921,7 +4921,10 @@ cse_insn (insn, libcall_insn) && (tem = find_reg_note (insn, REG_EQUAL, NULL_RTX)) != 0 && (! rtx_equal_p (XEXP (tem, 0), SET_SRC (sets[0].rtl)) || GET_CODE (SET_DEST (sets[0].rtl)) == STRICT_LOW_PART)) - src_eqv = canon_reg (XEXP (tem, 0), NULL_RTX); + { + src_eqv = fold_rtx (canon_reg (XEXP (tem, 0), NULL_RTX), insn); + XEXP (tem, 0) = src_eqv; + } /* Canonicalize sources and addresses of destinations. We do this in a separate pass to avoid problems when a MATCH_DUP is @@ -5025,7 +5028,6 @@ cse_insn (insn, libcall_insn) eqvmode = GET_MODE (SUBREG_REG (XEXP (dest, 0))); do_not_record = 0; hash_arg_in_memory = 0; - src_eqv = fold_rtx (src_eqv, insn); src_eqv_hash = HASH (src_eqv, eqvmode); /* Find the equivalence class for the equivalent expression. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8d054012ac36..10b23f9cf8cf 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -8,6 +8,8 @@ * gcc.dg/20020527-1.c: New test. + * g++.dg/opt/cse1.C: New test. + 2002-05-29 Hans-Peter Nilsson * gcc.c-torture/execute/20020529-1.c: New test.