summaryrefslogtreecommitdiff
path: root/gcc/lto-streamer-out.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/lto-streamer-out.c')
-rw-r--r--gcc/lto-streamer-out.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c
index 1dc37efc2b8..00a7badd9e7 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));