diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-06-24 12:17:16 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-06-24 12:17:16 +0000 |
commit | ea1a929fd73a1d6c04c612149bbd68e26294c3f8 (patch) | |
tree | 0b144aa71725e9242031811c26d608114f637c95 /gcc/lto-section-out.c | |
parent | 443752924e1b037c705e32c919bf6bc993fc10a5 (diff) | |
download | gcc-ea1a929fd73a1d6c04c612149bbd68e26294c3f8.tar.gz |
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>.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@200367 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lto-section-out.c')
-rw-r--r-- | gcc/lto-section-out.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/gcc/lto-section-out.c b/gcc/lto-section-out.c index 4b4440838c5..8145ec33354 100644 --- a/gcc/lto-section-out.c +++ b/gcc/lto-section-out.c @@ -225,20 +225,21 @@ lto_output_decl_index (struct lto_output_stream *obs, struct lto_tree_ref_encoder *encoder, tree name, unsigned int *this_index) { - void **slot; - int index; + unsigned *slot; + unsigned int index; bool new_entry_p = FALSE; + bool existed_p; - slot = pointer_map_insert (encoder->tree_hash_table, name); - if (*slot == NULL) + slot = encoder->tree_hash_table->insert (name, &existed_p); + if (!existed_p) { index = encoder->trees.length (); - *slot = (void *)(uintptr_t) index; + *slot = index; encoder->trees.safe_push (name); new_entry_p = TRUE; } else - index = (uintptr_t) *slot; + index = *slot; if (obs) streamer_write_uhwi_stream (obs, index); @@ -438,7 +439,7 @@ lto_record_function_out_decl_state (tree fn_decl, for (i = 0; i < LTO_N_DECL_STREAMS; i++) if (state->streams[i].tree_hash_table) { - pointer_map_destroy (state->streams[i].tree_hash_table); + delete state->streams[i].tree_hash_table; state->streams[i].tree_hash_table = NULL; } state->fn_decl = fn_decl; |