From 14c235d91d20ec2ac27bc93235d6b28f5abc4933 Mon Sep 17 00:00:00 2001
From: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Tue, 13 Apr 2004 14:48:56 +0000
Subject: [PATCH] 	* hashtab.c (htab_remove_elt_with_hash): New function.
 	(htab_remove_elt): Implement in terms of htab_remove_elt_with_hash.

	* hashtab.h (htab_remove_elt_with_hash): Prototype new function.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@80641 138bc75d-0d04-0410-961f-82ee72b054a4
---
 include/ChangeLog   |  4 ++++
 include/hashtab.h   |  1 +
 libiberty/ChangeLog |  5 +++++
 libiberty/hashtab.c | 18 ++++++++++++++++--
 4 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/include/ChangeLog b/include/ChangeLog
index e415afaaf9b5..4e26bce3b63a 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2004-04-13  Jeff Law  <law@redhat.com>
+
+        * hashtab.h (htab_remove_elt_with_hash): Prototype new function.
+
 2004-03-30  Zack Weinberg  <zack@codesourcery.com>
 
 	* hashtab.h, splay-tree.h: Use new shorter form of GTY markers.
diff --git a/include/hashtab.h b/include/hashtab.h
index 1af7368d338b..a2ef32c36ae2 100644
--- a/include/hashtab.h
+++ b/include/hashtab.h
@@ -166,6 +166,7 @@ extern PTR     *htab_find_slot_with_hash  PARAMS ((htab_t, const void *,
 						   enum insert_option));
 extern void	htab_clear_slot	PARAMS ((htab_t, void **));
 extern void	htab_remove_elt	PARAMS ((htab_t, void *));
+extern void	htab_remove_elt_with_hash PARAMS ((htab_t, void *, hashval_t));
 
 extern void	htab_traverse	PARAMS ((htab_t, htab_trav, void *));
 extern void	htab_traverse_noresize	PARAMS ((htab_t, htab_trav, void *));
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 661ca4b45b98..7da2d46d6082 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,8 @@
+2004-04-13  Jeff Law  <law@redhat.com>
+
+	* hashtab.c (htab_remove_elt_with_hash): New function.
+	(htab_remove_elt): Implement in terms of htab_remove_elt_with_hash.
+
 2004-03-31  Richard Henderson  <rth@redhat.com>
 
 	* hashtab.c (htab_size): Move to top of file; mark inline.
diff --git a/libiberty/hashtab.c b/libiberty/hashtab.c
index f7751664f04f..2639428df9c6 100644
--- a/libiberty/hashtab.c
+++ b/libiberty/hashtab.c
@@ -599,18 +599,32 @@ htab_find_slot (htab, element, insert)
 				   insert);
 }
 
+/* This function deletes an element with the given value from hash
+   table (the hash is computed from the element).  If there is no matching
+   element in the hash table, this function does nothing.  */
+
+void
+htab_remove_elt (htab, element)
+     htab_t htab;
+     PTR element;
+{
+  htab_remove_elt_with_hash (htab, element, (*htab->hash_f) (element));
+}
+
+
 /* This function deletes an element with the given value from hash
    table.  If there is no matching element in the hash table, this
    function does nothing.  */
 
 void
-htab_remove_elt (htab, element)
+htab_remove_elt_with_hash (htab, element, hash)
      htab_t htab;
      PTR element;
+     hashval_t hash;
 {
   PTR *slot;
 
-  slot = htab_find_slot (htab, element, NO_INSERT);
+  slot = htab_find_slot_with_hash (htab, element, hash, NO_INSERT);
   if (*slot == EMPTY_ENTRY)
     return;
 
-- 
GitLab