OSDN Git Service

* passes.c (ipa_write_summaries_1, ipa_write_optimization_summaries): Allocate
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 10 May 2010 16:13:52 +0000 (16:13 +0000)
committerMasaki Muranaka <monaka@monami-software.com>
Sun, 23 May 2010 05:04:28 +0000 (14:04 +0900)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159230 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/lto-section-out.c
gcc/lto-streamer-out.c
gcc/lto-streamer.c
gcc/lto-streamer.h
gcc/passes.c

index 5e7c6de..b4b9a65 100644 (file)
@@ -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.
index 8bcbdd7..b5353f3 100644 (file)
@@ -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;
 }
 
index cffaee5..86f2c73 100644 (file)
@@ -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);
index 01703f1..0ae7c0c 100644 (file)
@@ -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);
index 4f3d60d..65e2b3f 100644 (file)
@@ -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;
 
index f482437..c087750 100644 (file)
@@ -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);