+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
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);
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. */
}
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