summaryrefslogtreecommitdiff
path: root/gcc/lto-section-out.c
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2013-06-24 12:17:16 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2013-06-24 12:17:16 +0000
commitea1a929fd73a1d6c04c612149bbd68e26294c3f8 (patch)
tree0b144aa71725e9242031811c26d608114f637c95 /gcc/lto-section-out.c
parent443752924e1b037c705e32c919bf6bc993fc10a5 (diff)
downloadgcc-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.c15
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;