===================================================================
@@ -2781,7 +2781,6 @@ read_cgraph_and_symbols (unsigned nfiles
/* At this stage we know that majority of GGC memory is reachable.
Growing the limits prevents unnecesary invocation of GGC. */
ggc_grow ();
- ggc_collect ();
/* Set the hooks so that all of the ipa passes can read in their data. */
lto_set_in_hooks (all_file_decl_data, get_section_data, free_section_data);
@@ -2852,7 +2851,11 @@ read_cgraph_and_symbols (unsigned nfiles
if (tree_with_vars)
ggc_free (tree_with_vars);
tree_with_vars = NULL;
- ggc_collect ();
+ /* During WPA we want to prevent ggc collecting by default. Grow limits
+ until after the IPA summaries are streamed in. Basically all IPA memory
+ is explcitly managed by ggc_free and ggc collect is not useful.
+ Exception are the merged declarations. */
+ ggc_grow ();
timevar_pop (TV_IPA_LTO_DECL_MERGE);
/* Each pass will set the appropriate timer. */
@@ -2866,6 +2869,8 @@ read_cgraph_and_symbols (unsigned nfiles
else
ipa_read_summaries ();
+ ggc_grow ();
+
for (i = 0; all_file_decl_data[i]; i++)
{
gcc_assert (all_file_decl_data[i]->symtab_node_encoder);