diff options
author | Jan Hubicka <jh@suse.cz> | 2011-05-03 19:22:58 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2011-05-03 17:22:58 +0000 |
commit | 1cb1a99f77b15cd8342ffbb0cd89cc0110350c48 (patch) | |
tree | 29d6574c5d8892da7a62fdb54c7eabbacb56e4b1 /gcc/lto | |
parent | b445518d112c0cd481b15df83fbef474cf4058d6 (diff) | |
download | gcc-1cb1a99f77b15cd8342ffbb0cd89cc0110350c48.zip gcc-1cb1a99f77b15cd8342ffbb0cd89cc0110350c48.tar.gz gcc-1cb1a99f77b15cd8342ffbb0cd89cc0110350c48.tar.bz2 |
cgraph.h (cgraph_node_set_def, [...]): Move out of GTY; replace hash by pointer map.
* cgraph.h (cgraph_node_set_def, varpool_node_set_def): Move out of GTY;
replace hash by pointer map.
(cgraph_node_set_element_def, cgraph_node_set_element,
const_cgraph_node_set_element, varpool_node_set_element_def,
varpool_node_set_element, const_varpool_node_set_element): Remove.
(free_cgraph_node_set, free_varpool_node_set): New function.
(cgraph_node_set_size, varpool_node_set_size): Use vector size.
* tree-emutls.c: Free varpool node set.
* ipa-utils.c (cgraph_node_set_new, cgraph_node_set_add,
cgraph_node_set_remove, cgraph_node_set_find, dump_cgraph_node_set,
debug_cgraph_node_set, free_cgraph_node_set, varpool_node_set_new,
varpool_node_set_add, varpool_node_set_remove, varpool_node_set_find,
dump_varpool_node_set, free_varpool_node_set, debug_varpool_node_set):
Move here from ipa.c; implement using pointer_map
* ipa.c (cgraph_node_set_new, cgraph_node_set_add,
cgraph_node_set_remove, cgraph_node_set_find, dump_cgraph_node_set,
debug_cgraph_node_set, varpool_node_set_new,
varpool_node_set_add, varpool_node_set_remove, varpool_node_set_find,
dump_varpool_node_set, debug_varpool_node_set):
Move to ipa-uitls.c.
* lto/lto.c (ltrans_partition_def): Remove GTY annotations.
(ltrans_partitions): Move to heap.
(new_partition): Update.
(free_ltrans_partitions): New function.
(lto_wpa_write_files): Use it.
* passes.c (ipa_write_summaries): Update.
From-SVN: r173334
Diffstat (limited to 'gcc/lto')
-rw-r--r-- | gcc/lto/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/lto/lto.c | 28 |
2 files changed, 30 insertions, 6 deletions
diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index efcd633..dea5f64 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,11 @@ +2011-05-03 Jan Hubicka <jh@suse.cz> + + * lto.c (ltrans_partition_def): Remove GTY annotations. + (ltrans_partitions): Move to heap. + (new_partition): Update. + (free_ltrans_partitions): New function. + (lto_wpa_write_files): Use it. + 2011-04-29 Martin Jambor <mjambor@suse.cz> * lto.c: Include ipa-utils.h. diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index a8027a4..9407a17 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -1127,19 +1127,19 @@ free_section_data (struct lto_file_decl_data *file_data ATTRIBUTE_UNUSED, /* Structure describing ltrans partitions. */ -struct GTY (()) ltrans_partition_def +struct ltrans_partition_def { cgraph_node_set cgraph_set; varpool_node_set varpool_set; - const char * GTY ((skip)) name; + const char * name; int insns; }; typedef struct ltrans_partition_def *ltrans_partition; DEF_VEC_P(ltrans_partition); -DEF_VEC_ALLOC_P(ltrans_partition,gc); +DEF_VEC_ALLOC_P(ltrans_partition,heap); -static GTY (()) VEC(ltrans_partition, gc) *ltrans_partitions; +static VEC(ltrans_partition, heap) *ltrans_partitions; static void add_cgraph_node_to_partition (ltrans_partition part, struct cgraph_node *node); static void add_varpool_node_to_partition (ltrans_partition part, struct varpool_node *vnode); @@ -1148,15 +1148,29 @@ static void add_varpool_node_to_partition (ltrans_partition part, struct varpool static ltrans_partition new_partition (const char *name) { - ltrans_partition part = ggc_alloc_ltrans_partition_def (); + ltrans_partition part = XCNEW (struct ltrans_partition_def); part->cgraph_set = cgraph_node_set_new (); part->varpool_set = varpool_node_set_new (); part->name = name; part->insns = 0; - VEC_safe_push (ltrans_partition, gc, ltrans_partitions, part); + VEC_safe_push (ltrans_partition, heap, ltrans_partitions, part); return part; } +/* Free memory used by ltrans datastructures. */ +static void +free_ltrans_partitions () +{ + unsigned int idx; + ltrans_partition part; + for (idx = 0; VEC_iterate (ltrans_partition, ltrans_partitions, idx, part); idx++) + { + free_cgraph_node_set (part->cgraph-set); + free (part); + } + VEC_free (latrans_partition, heap, ltrans_partitions); +} + /* See all references that go to comdat objects and bring them into partition too. */ static void add_references_to_partition (ltrans_partition part, struct ipa_ref_list *refs) @@ -1977,6 +1991,8 @@ lto_wpa_write_files (void) if (fclose (ltrans_output_list_stream)) fatal_error ("closing LTRANS output list %s: %m", ltrans_output_list); + free_ltrans_partitions(); + timevar_pop (TV_WHOPR_WPA_IO); } |