diff options
author | Zack Weinberg <zack@codesourcery.com> | 2004-05-20 16:02:35 +0000 |
---|---|---|
committer | Zack Weinberg <zack@gcc.gnu.org> | 2004-05-20 16:02:35 +0000 |
commit | 30719c65a90de4791db42c7c1b7cc3e17604f828 (patch) | |
tree | fe1a63458dd4e811e3f07a189475001d029dcc1c /gcc/cgraph.c | |
parent | 692603556b895a3a337b5a82e0012f69e8707896 (diff) | |
download | gcc-30719c65a90de4791db42c7c1b7cc3e17604f828.zip gcc-30719c65a90de4791db42c7c1b7cc3e17604f828.tar.gz gcc-30719c65a90de4791db42c7c1b7cc3e17604f828.tar.bz2 |
* cgraph.c (hash_node, eq_node, cgraph_node, cgraph_remove_node)
(cgraph_varpool_hash_node, eq_cgraph_varpool_node)
(cgraph_varpool_node): Hash on the pointer to the decl, not
the DECL_UID. Fixes 64-bit bootstrap failure.
From-SVN: r82059
Diffstat (limited to 'gcc/cgraph.c')
-rw-r--r-- | gcc/cgraph.c | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c index 5e44b55..a1f137a 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -139,7 +139,7 @@ static int eq_node (const void *, const void *); static hashval_t hash_node (const void *p) { - return ((hashval_t) DECL_UID (((struct cgraph_node *) p)->decl)); + return htab_hash_pointer (((struct cgraph_node *) p)->decl); } /* Returns nonzero if P1 and P2 are equal. */ @@ -147,7 +147,7 @@ hash_node (const void *p) static int eq_node (const void *p1, const void *p2) { - return (DECL_UID (((struct cgraph_node *) p1)->decl) == (unsigned int)p2); + return (void *)((struct cgraph_node *) p1)->decl == p2; } /* Allocate new callgraph node and insert it into basic data structures. */ @@ -181,10 +181,8 @@ cgraph_node (tree decl) cgraph_hash = htab_create_ggc (10, hash_node, eq_node, NULL); slot = (struct cgraph_node **) - htab_find_slot_with_hash (cgraph_hash, - (void *)DECL_UID (decl), - (hashval_t)DECL_UID (decl), - INSERT); + htab_find_slot_with_hash (cgraph_hash, decl, + htab_hash_pointer (decl), INSERT); if (*slot) return *slot; @@ -326,10 +324,8 @@ cgraph_remove_node (struct cgraph_node *node) if (node->next) node->next->previous = node->previous; slot = - htab_find_slot_with_hash (cgraph_hash, - (void *)DECL_UID (node->decl), - (hashval_t)DECL_UID (node->decl), - NO_INSERT); + htab_find_slot_with_hash (cgraph_hash, node->decl, + htab_hash_pointer (node->decl), NO_INSERT); if (*slot == node) { if (node->next_clone) @@ -532,7 +528,7 @@ dump_cgraph (FILE *f) static hashval_t cgraph_varpool_hash_node (const void *p) { - return ((hashval_t) DECL_UID (((struct cgraph_varpool_node *) p)->decl)); + return htab_hash_pointer (((struct cgraph_varpool_node *) p)->decl); } /* Returns nonzero if P1 and P2 are equal. */ @@ -540,9 +536,7 @@ cgraph_varpool_hash_node (const void *p) static int eq_cgraph_varpool_node (const void *p1, const void *p2) { - return (DECL_UID (((struct cgraph_varpool_node *) p1)->decl) - == (unsigned int) p2); - + return (void *)((struct cgraph_varpool_node *) p1)->decl == p2; } /* Return cgraph_varpool node assigned to DECL. Create new one when needed. */ @@ -559,10 +553,8 @@ cgraph_varpool_node (tree decl) cgraph_varpool_hash = htab_create_ggc (10, cgraph_varpool_hash_node, eq_cgraph_varpool_node, NULL); slot = (struct cgraph_varpool_node **) - htab_find_slot_with_hash (cgraph_varpool_hash, - (void *)DECL_UID (decl), - (hashval_t)DECL_UID (decl), - INSERT); + htab_find_slot_with_hash (cgraph_varpool_hash, decl, + htab_hash_pointer (decl), INSERT); if (*slot) return *slot; node = ggc_alloc_cleared (sizeof (*node)); |