From: Richard Biener Date: Tue, 19 Aug 2014 07:57:44 +0000 (+0000) Subject: lto-streamer-out.c (DFS::DFS_write_tree_body): Stream DECL_EXTERNALs in BLOCKs as... X-Git-Tag: releases/gcc-5.1.0~5389 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=47503a4919cba2c808cbf30a19685462fd60c6a1;p=thirdparty%2Fgcc.git lto-streamer-out.c (DFS::DFS_write_tree_body): Stream DECL_EXTERNALs in BLOCKs as non-references. 2014-08-19 Richard Biener * lto-streamer-out.c (DFS::DFS_write_tree_body): Stream DECL_EXTERNALs in BLOCKs as non-references. * tree-streamer-out.c (streamer_write_chain): Likewise. From-SVN: r214135 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d0f260b4712b..dafc0e5a9888 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-08-19 Richard Biener + + * lto-streamer-out.c (DFS::DFS_write_tree_body): Stream + DECL_EXTERNALs in BLOCKs as non-references. + * tree-streamer-out.c (streamer_write_chain): Likewise. + 2014-08-19 Alexander Ivchenko Maxim Kuznetsov Anna Tikhonova diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c index 1dc37efc2b89..00a7badd9e75 100644 --- a/gcc/lto-streamer-out.c +++ b/gcc/lto-streamer-out.c @@ -648,9 +648,13 @@ DFS::DFS_write_tree_body (struct output_block *ob, if (CODE_CONTAINS_STRUCT (code, TS_BLOCK)) { for (tree t = BLOCK_VARS (expr); t; t = TREE_CHAIN (t)) - /* ??? FIXME. See also streamer_write_chain. */ - if (!(VAR_OR_FUNCTION_DECL_P (t) - && DECL_EXTERNAL (t))) + if (VAR_OR_FUNCTION_DECL_P (t) + && DECL_EXTERNAL (t)) + /* We have to stream externals in the block chain as + non-references. See also + tree-streamer-out.c:streamer_write_chain. */ + DFS_write_tree (ob, expr_state, t, ref_p, false, single_p); + else DFS_follow_tree_edge (t); DFS_follow_tree_edge (BLOCK_SUPERCONTEXT (expr)); diff --git a/gcc/tree-streamer-out.c b/gcc/tree-streamer-out.c index 52e714ef29eb..15ad8f8dbf6f 100644 --- a/gcc/tree-streamer-out.c +++ b/gcc/tree-streamer-out.c @@ -524,11 +524,11 @@ streamer_write_chain (struct output_block *ob, tree t, bool ref_p) /* We avoid outputting external vars or functions by reference to the global decls section as we do not want to have them enter decl merging. This is, of course, only for the call - for streaming BLOCK_VARS, but other callers are safe. */ - /* ??? FIXME wrt SCC streaming. Drop these for now. */ + for streaming BLOCK_VARS, but other callers are safe. + See also lto-streamer-out.c:DFS_write_tree_body. */ if (VAR_OR_FUNCTION_DECL_P (t) && DECL_EXTERNAL (t)) - ; /* stream_write_tree_shallow_non_ref (ob, t, ref_p); */ + stream_write_tree_shallow_non_ref (ob, t, ref_p); else stream_write_tree (ob, t, ref_p);