aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-08-25 19:21:18 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-08-25 19:21:18 -0400
commitaf3869c1cca932fb4696a49aae03fa8fa032d618 (patch)
treec111a3a3b5af357fa0a2c4f891e147e50a597d3c
parentb278301b1b1724a1edb673afafc8c90e211f1906 (diff)
downloadgcc-af3869c1cca932fb4696a49aae03fa8fa032d618.zip
gcc-af3869c1cca932fb4696a49aae03fa8fa032d618.tar.gz
gcc-af3869c1cca932fb4696a49aae03fa8fa032d618.tar.bz2
(record_jump_cond): Don't do anything if OP0 and OP1 are already
equivalent. From-SVN: r7984
-rw-r--r--gcc/cse.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/cse.c b/gcc/cse.c
index 4902b89..a4de3477 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -5805,6 +5805,13 @@ record_jump_cond (code, mode, op0, op1, reversed_nonequality)
op0_elt = lookup (op0, op0_hash, mode);
op1_elt = lookup (op1, op1_hash, mode);
+ /* If both operands are already equivalent or if they are not in the
+ table but are identical, do nothing. */
+ if ((op0_elt != 0 && op1_elt != 0
+ && op0_elt->first_same_value == op1_elt->first_same_value)
+ || op0 == op1 || rtx_equal_p (op0, op1))
+ return;
+
/* If we aren't setting two things equal all we can do is save this
comparison. Similarly if this is floating-point. In the latter
case, OP1 might be zero and both -0.0 and 0.0 are equal to it.