re PR bootstrap/47820 (LTO bootstrap failed with bootstrap-profiled)
authorRichard Guenther <rguenther@suse.de>
Mon, 21 Feb 2011 13:38:48 +0000 (13:38 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 21 Feb 2011 13:38:48 +0000 (13:38 +0000)
2011-02-21  Richard Guenther  <rguenther@suse.de>

PR lto/47820
* lto-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
Do not stream DECL_INITIAL for TRANSLATION_UNIT_DECLs.
(lto_input_ts_block_tree_pointers): Hook a BLOCK into the
TUs context.
* lto-streamer-out.c (lto_output_ts_decl_common_tree_pointers):
Do not stream DECL_INITIAL for TRANSLATION_UNIT_DECLs.

From-SVN: r170359

gcc/ChangeLog
gcc/lto-streamer-in.c
gcc/lto-streamer-out.c

index cfed6bdff2215b820e5b9ab4596a2e3384505c1c..fbd8007c99d246bd359342f541a78e4d7f7a2260 100644 (file)
@@ -1,3 +1,13 @@
+2011-02-21  Richard Guenther  <rguenther@suse.de>
+
+       PR lto/47820
+       * lto-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
+       Do not stream DECL_INITIAL for TRANSLATION_UNIT_DECLs.
+       (lto_input_ts_block_tree_pointers): Hook a BLOCK into the
+       TUs context.
+       * lto-streamer-out.c (lto_output_ts_decl_common_tree_pointers): 
+       Do not stream DECL_INITIAL for TRANSLATION_UNIT_DECLs.
+
 2011-02-20  Richard Guenther  <rguenther@suse.de>
 
        PR lto/47822
index 5f5b263c4cd7deaf6cf8281c71a3d4c120869346..7409c1aca9d4a0a23deed52fad4a50040c741e7b 100644 (file)
@@ -1975,7 +1975,8 @@ lto_input_ts_decl_common_tree_pointers (struct lto_input_block *ib,
   DECL_SIZE (expr) = lto_input_tree (ib, data_in);
   DECL_SIZE_UNIT (expr) = lto_input_tree (ib, data_in);
 
-  if (TREE_CODE (expr) != FUNCTION_DECL)
+  if (TREE_CODE (expr) != FUNCTION_DECL
+      && TREE_CODE (expr) != TRANSLATION_UNIT_DECL)
     DECL_INITIAL (expr) = lto_input_tree (ib, data_in);
 
   DECL_ATTRIBUTES (expr) = lto_input_tree (ib, data_in);
@@ -2207,6 +2208,13 @@ lto_input_ts_block_tree_pointers (struct lto_input_block *ib,
       BLOCK_CHAIN (expr) = BLOCK_SUBBLOCKS (BLOCK_SUPERCONTEXT (expr));
       BLOCK_SUBBLOCKS (BLOCK_SUPERCONTEXT (expr)) = expr;
     }
+  /* The global block is rooted at the TU decl.  Hook it here to
+     avoid the need to stream in this block during WPA time.  */
+  else if (BLOCK_SUPERCONTEXT (expr)
+          && TREE_CODE (BLOCK_SUPERCONTEXT (expr)) == TRANSLATION_UNIT_DECL)
+    DECL_INITIAL (BLOCK_SUPERCONTEXT (expr)) = expr;
+  /* The function-level block is connected at the time we read in
+     function bodies for the same reason.  */
 }
 
 
index bb2985a450dea6269561f1dc86bdfb0c8fed738d..29d171bd7f41cc9d58a93b19b28c7d188f778d6b 100644 (file)
@@ -849,7 +849,8 @@ lto_output_ts_decl_common_tree_pointers (struct output_block *ob, tree expr,
   lto_output_tree_or_ref (ob, DECL_SIZE (expr), ref_p);
   lto_output_tree_or_ref (ob, DECL_SIZE_UNIT (expr), ref_p);
 
-  if (TREE_CODE (expr) != FUNCTION_DECL)
+  if (TREE_CODE (expr) != FUNCTION_DECL
+      && TREE_CODE (expr) != TRANSLATION_UNIT_DECL)
     {
       tree initial = DECL_INITIAL (expr);
       if (TREE_CODE (expr) == VAR_DECL