diff options
author | Richard Biener <rguenther@suse.de> | 2013-06-24 12:17:16 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2013-06-24 12:17:16 +0000 |
commit | 7c5848b89955c3ec45a78630f23d610f13e3e47b (patch) | |
tree | 0b144aa71725e9242031811c26d608114f637c95 /gcc/tree-streamer.c | |
parent | e04518ae25780abd0e0f70533de0f0ddb53f868c (diff) | |
download | gcc-7c5848b89955c3ec45a78630f23d610f13e3e47b.zip gcc-7c5848b89955c3ec45a78630f23d610f13e3e47b.tar.gz gcc-7c5848b89955c3ec45a78630f23d610f13e3e47b.tar.bz2 |
pointer-set.h (struct pointer_set_t): Move here from pointer-set.c.
2013-06-24 Richard Biener <rguenther@suse.de>
* 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<T>::pointer_map, pointer_map<T>::~pointer_map,
pointer_map<T>::contains, pointer_map<T>::insert,
pointer_map<T>::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<unsigned> 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<unsigned> 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<int>.
From-SVN: r200367
Diffstat (limited to 'gcc/tree-streamer.c')
-rw-r--r-- | gcc/tree-streamer.c | 28 |
1 files changed, 11 insertions, 17 deletions
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<unsigned>; 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); |