diff options
author | Jakub Jelinek <jakub@redhat.com> | 2010-06-02 21:49:21 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2010-06-02 21:49:21 +0200 |
commit | 53e030f1439a414a0247a86fa76534f353558be4 (patch) | |
tree | d84b06f0fdeaa66af08574dc1b752fda3c962abf /gcc/tree.c | |
parent | 3333a2ddebbb512fa251932e3e3fd8c0bc583d2b (diff) | |
download | gcc-53e030f1439a414a0247a86fa76534f353558be4.tar.gz |
tree.h (struct tree_decl_map): New type.
* tree.h (struct tree_decl_map): New type.
(tree_decl_map_eq, tree_decl_map_marked_p): Define.
(tree_decl_map_hash): New prototype.
(debug_expr_for_decl, value_expr_for_decl): Change into
tree_decl_map hashtab from tree_map.
(init_ttree): Adjust initialization.
(tree_decl_map_hash): New function.
(decl_debug_expr_lookup, decl_debug_expr_insert,
decl_value_expr_lookup, decl_value_expr_insert): Adjust.
cp/
* cp-objcp-common.c (shadowed_var_for_decl): Change into
tree_decl_map hashtab from tree_map.
(decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert): Adjust.
(init_shadowed_var_for_decl): Adjust initialization.
From-SVN: r160185
Diffstat (limited to 'gcc/tree.c')
-rw-r--r-- | gcc/tree.c | 56 |
1 files changed, 33 insertions, 23 deletions
diff --git a/gcc/tree.c b/gcc/tree.c index 81ea666d8aa..67e2f417cb9 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -196,10 +196,10 @@ static GTY ((if_marked ("ggc_marked_p"), param_is (union tree_node))) /* General tree->tree mapping structure for use in hash tables. */ -static GTY ((if_marked ("tree_map_marked_p"), param_is (struct tree_map))) +static GTY ((if_marked ("tree_decl_map_marked_p"), param_is (struct tree_decl_map))) htab_t debug_expr_for_decl; -static GTY ((if_marked ("tree_map_marked_p"), param_is (struct tree_map))) +static GTY ((if_marked ("tree_decl_map_marked_p"), param_is (struct tree_decl_map))) htab_t value_expr_for_decl; static GTY ((if_marked ("tree_priority_map_marked_p"), @@ -533,11 +533,11 @@ init_ttree (void) type_hash_table = htab_create_ggc (TYPE_HASH_INITIAL_SIZE, type_hash_hash, type_hash_eq, 0); - debug_expr_for_decl = htab_create_ggc (512, tree_map_hash, - tree_map_eq, 0); + debug_expr_for_decl = htab_create_ggc (512, tree_decl_map_hash, + tree_decl_map_eq, 0); - value_expr_for_decl = htab_create_ggc (512, tree_map_hash, - tree_map_eq, 0); + value_expr_for_decl = htab_create_ggc (512, tree_decl_map_hash, + tree_decl_map_eq, 0); init_priority_for_decl = htab_create_ggc (512, tree_priority_map_hash, tree_priority_map_eq, 0); @@ -5560,7 +5560,7 @@ tree_map_base_eq (const void *va, const void *vb) return (a->from == b->from); } -/* Hash a from tree in a tree_map. */ +/* Hash a from tree in a tree_base_map. */ unsigned int tree_map_base_hash (const void *item) @@ -5578,12 +5578,22 @@ tree_map_base_marked_p (const void *p) return ggc_marked_p (((const struct tree_map_base *) p)->from); } +/* Hash a from tree in a tree_map. */ + unsigned int tree_map_hash (const void *item) { return (((const struct tree_map *) item)->hash); } +/* Hash a from tree in a tree_decl_map. */ + +unsigned int +tree_decl_map_hash (const void *item) +{ + return DECL_UID (((const struct tree_decl_map *) item)->base.from); +} + /* Return the initialization priority for DECL. */ priority_type @@ -5689,11 +5699,11 @@ print_value_expr_statistics (void) tree decl_debug_expr_lookup (tree from) { - struct tree_map *h, in; + struct tree_decl_map *h, in; in.base.from = from; - h = (struct tree_map *) htab_find_with_hash (debug_expr_for_decl, &in, - htab_hash_pointer (from)); + h = (struct tree_decl_map *) + htab_find_with_hash (debug_expr_for_decl, &in, DECL_UID (from)); if (h) return h->to; return NULL_TREE; @@ -5704,15 +5714,15 @@ decl_debug_expr_lookup (tree from) void decl_debug_expr_insert (tree from, tree to) { - struct tree_map *h; + struct tree_decl_map *h; void **loc; - h = GGC_NEW (struct tree_map); - h->hash = htab_hash_pointer (from); + h = GGC_NEW (struct tree_decl_map); h->base.from = from; h->to = to; - loc = htab_find_slot_with_hash (debug_expr_for_decl, h, h->hash, INSERT); - *(struct tree_map **) loc = h; + loc = htab_find_slot_with_hash (debug_expr_for_decl, h, DECL_UID (from), + INSERT); + *(struct tree_decl_map **) loc = h; } /* Lookup a value expression for FROM, and return it if we find one. */ @@ -5720,11 +5730,11 @@ decl_debug_expr_insert (tree from, tree to) tree decl_value_expr_lookup (tree from) { - struct tree_map *h, in; + struct tree_decl_map *h, in; in.base.from = from; - h = (struct tree_map *) htab_find_with_hash (value_expr_for_decl, &in, - htab_hash_pointer (from)); + h = (struct tree_decl_map *) + htab_find_with_hash (value_expr_for_decl, &in, DECL_UID (from)); if (h) return h->to; return NULL_TREE; @@ -5735,15 +5745,15 @@ decl_value_expr_lookup (tree from) void decl_value_expr_insert (tree from, tree to) { - struct tree_map *h; + struct tree_decl_map *h; void **loc; - h = GGC_NEW (struct tree_map); - h->hash = htab_hash_pointer (from); + h = GGC_NEW (struct tree_decl_map); h->base.from = from; h->to = to; - loc = htab_find_slot_with_hash (value_expr_for_decl, h, h->hash, INSERT); - *(struct tree_map **) loc = h; + loc = htab_find_slot_with_hash (value_expr_for_decl, h, DECL_UID (from), + INSERT); + *(struct tree_decl_map **) loc = h; } /* Hashing of types so that we don't make duplicates. |