summaryrefslogtreecommitdiff
path: root/gcc/lto-streamer-out.c
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2014-08-19 07:57:44 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2014-08-19 07:57:44 +0000
commit4517f7e7ac7c7d6d0c793b29eccda5ead7c5d489 (patch)
tree9c3c3f9957eb4b87e7976b5b57d29f4fe6005959 /gcc/lto-streamer-out.c
parent7da26bee9e71e6d724c551de41c0b49aed446e02 (diff)
downloadgcc-4517f7e7ac7c7d6d0c793b29eccda5ead7c5d489.tar.gz
2014-08-19 Richard Biener <rguenther@suse.de>
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214135 138bc75d-0d04-0410-961f-82ee72b054a4
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));