diff options
author | Mark Mitchell <mark@codesourcery.com> | 2000-04-24 07:29:11 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2000-04-24 07:29:11 +0000 |
commit | 18a94a2f75417b44551c1e0e02865a9d7632e564 (patch) | |
tree | 488af2866d01b416ccf20f74818935ec34822045 | |
parent | 7d78e330d1169ef4bf7a47a67c73001b9d0fac6c (diff) | |
download | gcc-18a94a2f75417b44551c1e0e02865a9d7632e564.zip gcc-18a94a2f75417b44551c1e0e02865a9d7632e564.tar.gz gcc-18a94a2f75417b44551c1e0e02865a9d7632e564.tar.bz2 |
hashtab.h (hash_pointer): Declare.
* hashtab.h (hash_pointer): Declare.
(eq_pointer): Likewise.
* hashtab.c (hash_pointer): New function.
(eq_pointer): Likewise.
(htab_hash_pointer): New variable.
(htab_eq_pointer): Likewise.
From-SVN: r33372
-rw-r--r-- | include/ChangeLog | 5 | ||||
-rw-r--r-- | include/hashtab.h | 6 | ||||
-rw-r--r-- | libiberty/ChangeLog | 7 | ||||
-rw-r--r-- | libiberty/hashtab.c | 27 |
4 files changed, 45 insertions, 0 deletions
diff --git a/include/ChangeLog b/include/ChangeLog index 7dd93fb..f17e65d 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +2000-04-24 Mark Mitchell <mark@codesourcery.com> + + * hashtab.h (hash_pointer): Declare. + (eq_pointer): Likewise. + 2000-04-23 Mark Mitchell <mark@codesourcery.com> * sort.h: New file. diff --git a/include/hashtab.h b/include/hashtab.h index a516c45..12f830c 100644 --- a/include/hashtab.h +++ b/include/hashtab.h @@ -129,6 +129,12 @@ extern size_t htab_size PARAMS ((htab_t)); extern size_t htab_elements PARAMS ((htab_t)); extern double htab_collisions PARAMS ((htab_t)); +/* A hash function for pointers. */ +extern htab_hash htab_hash_pointer; + +/* An equality function for pointers. */ +extern htab_eq htab_eq_pointer; + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index cfc03e3..25215d3 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,10 @@ +2000-04-24 Mark Mitchell <mark@codesourcery.com> + + * hashtab.c (hash_pointer): New function. + (eq_pointer): Likewise. + (htab_hash_pointer): New variable. + (htab_eq_pointer): Likewise. + 2000-04-23 Mark Mitchell <mark@codesourcery.com> * sort.c (sort_pointers): Fix endianness bugs. diff --git a/libiberty/hashtab.c b/libiberty/hashtab.c index 2d1c09d..9cde177 100644 --- a/libiberty/hashtab.c +++ b/libiberty/hashtab.c @@ -56,6 +56,14 @@ Boston, MA 02111-1307, USA. */ #define DELETED_ENTRY ((void *) 1) static unsigned long higher_prime_number PARAMS ((unsigned long)); +static hashval_t hash_pointer PARAMS ((const void *)); +static int eq_pointer PARAMS ((const void *, const void *)); + +/* At some point, we could make these be NULL, and modify the + hash-table routines to handle NULL specially; that would avoid + function-call overhead for the common case of hashing pointers. */ +htab_hash htab_hash_pointer = hash_pointer; +htab_eq htab_eq_pointer = eq_pointer; /* The following function returns the nearest prime number which is greater than a given source number, N. */ @@ -88,6 +96,25 @@ higher_prime_number (n) return n; } +/* Returns a hash code for P. */ + +hashval_t +hash_pointer (p) + const void *p; +{ + return (hashval_t) p; +} + +/* Returns non-zero if P1 and P2 are equal. */ + +int +eq_pointer (p1, p2) + const void *p1; + const void *p2; +{ + return p1 == p2; +} + /* This function creates table with length slightly longer than given source length. Created hash table is initiated as empty (all the hash table entries are EMPTY_ENTRY). The function returns the |