From a77b7e32ec72dc7ee6085cfe0cf29b4384c70b1e Mon Sep 17 00:00:00 2001 From: Roger Sayle Date: Tue, 28 Jan 2003 14:52:07 +0000 Subject: [PATCH] * cse.c (cse_insn): Avoid redundant REG_EQUAL notes. From-SVN: r61971 --- gcc/ChangeLog | 4 ++++ gcc/cse.c | 14 +++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2fcc66f83cc..626823b06f3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2003-01-28 Roger Sayle + + * cse.c (cse_insn): Avoid redundant REG_EQUAL notes. + 2003-01-28 Richard Sandiford * config/sh/sh.h (CLASS_MAX_NREGS): If TARGET_SHMEDIA, and the given diff --git a/gcc/cse.c b/gcc/cse.c index 84210babcbd..e396042111e 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -5684,12 +5684,16 @@ cse_insn (insn, libcall_insn) && GET_CODE (XEXP (XEXP (src_const, 0), 0)) == LABEL_REF && GET_CODE (XEXP (XEXP (src_const, 0), 1)) == LABEL_REF)) { - /* Make sure that the rtx is not shared with any other insn. */ - src_const = copy_rtx (src_const); + /* We only want a REG_EQUAL note if src_const != src. */ + if (! rtx_equal_p (src, src_const)) + { + /* Make sure that the rtx is not shared. */ + src_const = copy_rtx (src_const); - /* Record the actual constant value in a REG_EQUAL note, making - a new one if one does not already exist. */ - set_unique_reg_note (insn, REG_EQUAL, src_const); + /* Record the actual constant value in a REG_EQUAL note, + making a new one if one does not already exist. */ + set_unique_reg_note (insn, REG_EQUAL, src_const); + } /* If storing a constant value in a register that previously held the constant value 0, -- 2.30.2