From 7c5848b89955c3ec45a78630f23d610f13e3e47b Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Mon, 24 Jun 2013 12:17:16 +0000 Subject: pointer-set.h (struct pointer_set_t): Move here from pointer-set.c. 2013-06-24 Richard Biener * pointer-set.h (struct pointer_set_t): Move here from pointer-set.c. (pointer_set_lookup): Declare. (class pointer_map): New template class implementing a generic pointer to T map. (pointer_map::pointer_map, pointer_map::~pointer_map, pointer_map::contains, pointer_map::insert, pointer_map::traverse): New functions. * pointer-set.c (struct pointer_set_t): Moved to pointer-set.h. (pointer_set_lookup): New function. (pointer_set_contains): Use pointer_set_lookup. (pointer_set_insert): Likewise. (insert_aux): Remove. (struct pointer_map_t): Embed a pointer_set_t. (pointer_map_create): Adjust. (pointer_map_destroy): Likewise. (pointer_map_contains): Likewise. (pointer_map_insert): Likewise. (pointer_map_traverse): Likewise. * tree-streamer.h (struct streamer_tree_cache_d): Use a pointer_map instead of a pointer_map_t. * tree-streamer.c (streamer_tree_cache_insert_1): Adjust. (streamer_tree_cache_lookup): Likewise. (streamer_tree_cache_create): Likewise. (streamer_tree_cache_delete): Likewise. * lto-streamer.h (struct lto_tree_ref_encoder): Use a pointer_map instead of a pointer_map_t. (lto_init_tree_ref_encoder): Adjust. (lto_destroy_tree_ref_encoder): Likewise. * lto-section-out.c (lto_output_decl_index): Likewise. (lto_record_function_out_decl_state): Likewise. * dominance.c (iterate_fix_dominators): Use pointer_map. From-SVN: r200367 --- gcc/tree-streamer.c | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) (limited to 'gcc/tree-streamer.c') diff --git a/gcc/tree-streamer.c b/gcc/tree-streamer.c index 86bad29..8d532d9 100644 --- a/gcc/tree-streamer.c +++ b/gcc/tree-streamer.c @@ -128,30 +128,27 @@ streamer_tree_cache_insert_1 (struct streamer_tree_cache_d *cache, tree t, hashval_t hash, unsigned *ix_p, bool insert_at_next_slot_p) { - void **slot; + unsigned *slot; unsigned ix; bool existed_p; gcc_assert (t); - slot = pointer_map_insert (cache->node_map, t); - if (!*slot) + slot = cache->node_map->insert (t, &existed_p); + if (!existed_p) { /* Determine the next slot to use in the cache. */ if (insert_at_next_slot_p) ix = cache->nodes.length (); else ix = *ix_p; - *slot = (void *)(size_t) (ix + 1); + *slot = ix; streamer_tree_cache_add_to_node_array (cache, ix, t, hash); - - /* Indicate that the item was not present in the cache. */ - existed_p = false; } else { - ix = (size_t) *slot - 1; + ix = *slot; if (!insert_at_next_slot_p && ix != *ix_p) { @@ -160,11 +157,8 @@ streamer_tree_cache_insert_1 (struct streamer_tree_cache_d *cache, the requested location slot. */ ix = *ix_p; streamer_tree_cache_add_to_node_array (cache, ix, t, hash); - *slot = (void *)(size_t) (ix + 1); + *slot = ix; } - - /* Indicate that T was already in the cache. */ - existed_p = true; } if (ix_p) @@ -225,13 +219,13 @@ bool streamer_tree_cache_lookup (struct streamer_tree_cache_d *cache, tree t, unsigned *ix_p) { - void **slot; + unsigned *slot; bool retval; unsigned ix; gcc_assert (t); - slot = pointer_map_contains (cache->node_map, t); + slot = cache->node_map->contains (t); if (slot == NULL) { retval = false; @@ -240,7 +234,7 @@ streamer_tree_cache_lookup (struct streamer_tree_cache_d *cache, tree t, else { retval = true; - ix = (size_t) *slot - 1; + ix = *slot; } if (ix_p) @@ -332,7 +326,7 @@ streamer_tree_cache_create (bool with_hashes, bool with_map) cache = XCNEW (struct streamer_tree_cache_d); if (with_map) - cache->node_map = pointer_map_create (); + cache->node_map = new pointer_map; cache->nodes.create (165); if (with_hashes) cache->hashes.create (165); @@ -355,7 +349,7 @@ streamer_tree_cache_delete (struct streamer_tree_cache_d *c) return; if (c->node_map) - pointer_map_destroy (c->node_map); + delete c->node_map; c->nodes.release (); c->hashes.release (); free (c); -- cgit v1.1