summaryrefslogtreecommitdiff
path: root/gcc/lto-streamer.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/lto-streamer.c')
-rw-r--r--gcc/lto-streamer.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/lto-streamer.c b/gcc/lto-streamer.c
index 01703f1a981..0ae7c0c6196 100644
--- a/gcc/lto-streamer.c
+++ b/gcc/lto-streamer.c
@@ -500,7 +500,7 @@ lto_streamer_cache_insert_1 (struct lto_streamer_cache_d *cache,
else
ix = *ix_p;
- entry = XCNEW (struct tree_int_map);
+ entry = (struct tree_int_map *)pool_alloc (cache->node_map_entries);
entry->base.from = t;
entry->to = (unsigned) ix;
*slot = entry;
@@ -762,6 +762,10 @@ lto_streamer_cache_create (void)
cache->node_map = htab_create (101, tree_int_map_hash, tree_int_map_eq, NULL);
+ cache->node_map_entries = create_alloc_pool ("node map",
+ sizeof (struct tree_int_map),
+ 100);
+
/* Load all the well-known tree nodes that are always created by
the compiler on startup. This prevents writing them out
unnecessarily. */
@@ -785,6 +789,7 @@ lto_streamer_cache_delete (struct lto_streamer_cache_d *c)
return;
htab_delete (c->node_map);
+ free_alloc_pool (c->node_map_entries);
VEC_free (tree, gc, c->nodes);
VEC_free (unsigned, heap, c->offsets);
free (c);