lto-common.c (read_cgraph_and_symbols): Grow ggc memory use after summary streaming.
authorJan Hubicka <hubicka@ucw.cz>
Sun, 13 Oct 2019 11:25:57 +0000 (13:25 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Sun, 13 Oct 2019 11:25:57 +0000 (11:25 +0000)
* lto-common.c (read_cgraph_and_symbols): Grow ggc memory use after
summary streaming.

From-SVN: r276936

gcc/lto/ChangeLog
gcc/lto/lto-common.c

index 2ef4a87da762745be314cb50af8f9fbe8b8c6aee..bb4e57ef131e0df372c43a8614f419a53cfeaf08 100644 (file)
@@ -1,3 +1,8 @@
+2019-10-12  Jan Hubicka  <hubicka@ucw.cz>
+
+       * lto-common.c (read_cgraph_and_symbols): Grow ggc memory use after
+       summary streaming.
+
 2019-10-12  Jan Hubicka  <hubicka@ucw.cz>
 
        * lto.c (lto_wpa_write_files): Do not update bodies of clones.
index e5c15f2b8449b044d2bbd5daddda3cc434b648a8..967f2285a73f441f91f9267d011a167886bfb591 100644 (file)
@@ -2781,7 +2781,6 @@ read_cgraph_and_symbols (unsigned nfiles, const char **fnames)
   /* 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, const char **fnames)
   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, const char **fnames)
   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);