From 1befacc8c5554979882499fa6a1d797791cf85ba Mon Sep 17 00:00:00 2001
From: Richard Guenther <rguenther@suse.de>
Date: Tue, 5 Jan 2010 10:53:11 +0000
Subject: [PATCH] tree-ssa-pre.c (bitmap_value_insert_into_set): Optimize.

2010-01-05  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-pre.c (bitmap_value_insert_into_set): Optimize.

From-SVN: r155643
---
 gcc/ChangeLog      |  4 ++++
 gcc/tree-ssa-pre.c | 13 +++++++++++--
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 89398d7eaf3e..9f8770fcaa07 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2010-01-05  Richard Guenther  <rguenther@suse.de>
+
+	* tree-ssa-pre.c (bitmap_value_insert_into_set): Optimize.
+
 2010-01-05  Jakub Jelinek  <jakub@redhat.com>
 
 	PR other/42611
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 124ba3b6766a..972af001a76f 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -867,8 +867,17 @@ bitmap_value_insert_into_set (bitmap_set_t set, pre_expr expr)
 {
   unsigned int val = get_expr_value_id (expr);
 
-  if (!bitmap_set_contains_value (set, val))
-    bitmap_insert_into_set_1 (set, expr, val, false);
+#ifdef ENABLE_CHECKING
+  gcc_assert (expr->id == get_or_alloc_expression_id (expr));
+#endif
+
+  /* Constant values are always considered to be part of the set.  */
+  if (value_id_constant_p (val))
+    return;
+
+  /* If the value membership changed, add the expression.  */
+  if (bitmap_set_bit (set->values, val))
+    bitmap_set_bit (set->expressions, expr->id);
 }
 
 /* Print out EXPR to outfile.  */
-- 
GitLab