OSDN Git Service

* hashtab.c (htab_remove_elt_with_hash): New function.
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 13 Apr 2004 14:48:56 +0000 (14:48 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 13 Apr 2004 14:48:56 +0000 (14:48 +0000)
(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
include/hashtab.h
libiberty/ChangeLog
libiberty/hashtab.c

index e415afa..4e26bce 100644 (file)
@@ -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.
index 1af7368..a2ef32c 100644 (file)
@@ -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 *));
index 661ca4b..7da2d46 100644 (file)
@@ -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.
index f775166..2639428 100644 (file)
@@ -600,17 +600,31 @@ htab_find_slot (htab, element, 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;