aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/lto-section-out.c3
-rw-r--r--gcc/lto-streamer-out.c1
-rw-r--r--gcc/lto-streamer.c7
-rw-r--r--gcc/lto-streamer.h4
-rw-r--r--gcc/passes.c5
6 files changed, 28 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5e7c6de..b4b9a65 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,17 @@
2010-05-10 Jan Hubicka <jh@suse.cz>
+ * passes.c (ipa_write_summaries_1, ipa_write_optimization_summaries): Allocate
+ encoders.
+ * lto-section-out.c (lto_new_out_decl_state): Do not allocate it here.
+ * lto-streamer.c (lto_streamer_cache_insert_1): Use alloc pool.
+ (lto_streamer_cache_create): Init alloc pool.
+ (lto_streamer_cache_delete): Free alloc pool.
+ * lto-streamer.h: Include alloc pool.
+ (lto_streamer_cache_d): Use alloc pool.
+ * lto-stramer-out.c (produce_asm_for_decls): Delete fn_out_states.
+
+2010-05-10 Jan Hubicka <jh@suse.cz>
+
* Makefile.in (cgraphbuild.o): Add dependency on except.h.
* cgraphbuild.c: Include except.h
(record_type_list, record_eh_tables): New function.
diff --git a/gcc/lto-section-out.c b/gcc/lto-section-out.c
index 8bcbdd7..b5353f3 100644
--- a/gcc/lto-section-out.c
+++ b/gcc/lto-section-out.c
@@ -542,9 +542,6 @@ lto_new_out_decl_state (void)
lto_init_tree_ref_encoder (&state->streams[i], hash_fn, eq_fn);
}
- state->cgraph_node_encoder = lto_cgraph_encoder_new ();
- state->varpool_node_encoder = lto_varpool_encoder_new ();
-
return state;
}
diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c
index cffaee5..86f2c73 100644
--- a/gcc/lto-streamer-out.c
+++ b/gcc/lto-streamer-out.c
@@ -2505,6 +2505,7 @@ produce_asm_for_decls (cgraph_node_set set, varpool_node_set vset)
fn_out_state =
VEC_index (lto_out_decl_state_ptr, lto_function_decl_states, idx);
lto_output_decl_state_refs (ob, decl_state_stream, fn_out_state);
+ lto_delete_out_decl_state (fn_out_state);
}
lto_write_stream (decl_state_stream);
free(decl_state_stream);
diff --git a/gcc/lto-streamer.c b/gcc/lto-streamer.c
index 01703f1..0ae7c0c 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);
diff --git a/gcc/lto-streamer.h b/gcc/lto-streamer.h
index 4f3d60d..65e2b3f 100644
--- a/gcc/lto-streamer.h
+++ b/gcc/lto-streamer.h
@@ -30,6 +30,7 @@ along with GCC; see the file COPYING3. If not see
#include "cgraph.h"
#include "vec.h"
#include "vecprim.h"
+#include "alloc-pool.h"
/* Define when debugging the LTO streamer. This causes the writer
to output the numeric value for the memory address of the tree node
@@ -346,6 +347,9 @@ struct lto_streamer_cache_d
/* The mapping between tree nodes and slots into the nodes array. */
htab_t node_map;
+ /* Node map to store entries into. */
+ alloc_pool node_map_entries;
+
/* Next available slot in the nodes and offsets arrays. */
unsigned next_slot;
diff --git a/gcc/passes.c b/gcc/passes.c
index f482437..c087750 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -1694,6 +1694,9 @@ static void
ipa_write_summaries_1 (cgraph_node_set set, varpool_node_set vset)
{
struct lto_out_decl_state *state = lto_new_out_decl_state ();
+ state->cgraph_node_encoder = lto_cgraph_encoder_new ();
+ state->varpool_node_encoder = lto_varpool_encoder_new ();
+
lto_push_out_decl_state (state);
gcc_assert (!flag_wpa);
@@ -1805,6 +1808,8 @@ void
ipa_write_optimization_summaries (cgraph_node_set set, varpool_node_set vset)
{
struct lto_out_decl_state *state = lto_new_out_decl_state ();
+ state->cgraph_node_encoder = lto_cgraph_encoder_new ();
+ state->varpool_node_encoder = lto_varpool_encoder_new ();
lto_push_out_decl_state (state);
gcc_assert (flag_wpa);