summaryrefslogtreecommitdiff
path: root/gcc/tree-streamer-in.c
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2012-03-19 09:40:25 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2012-03-19 09:40:25 +0000
commitcc41c998cd7a0a9d7aa46721d7bec75376923e2a (patch)
tree9335fe7171096c65ae6ba562393e40be4ad83fcc /gcc/tree-streamer-in.c
parentd7ed0a45cb30fc6b41f04a163c02d550bb487a18 (diff)
downloadgcc-cc41c998cd7a0a9d7aa46721d7bec75376923e2a.tar.gz
2012-03-19 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 185514 using svnmerge git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@185516 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-streamer-in.c')
-rw-r--r--gcc/tree-streamer-in.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/tree-streamer-in.c b/gcc/tree-streamer-in.c
index cb940aa7871..50ea77d1b13 100644
--- a/gcc/tree-streamer-in.c
+++ b/gcc/tree-streamer-in.c
@@ -473,6 +473,14 @@ streamer_alloc_tree (struct lto_input_block *ib, struct data_in *data_in,
HOST_WIDE_INT len = streamer_read_hwi (ib);
result = make_tree_vec (len);
}
+ else if (CODE_CONTAINS_STRUCT (code, TS_VECTOR))
+ {
+ HOST_WIDE_INT len = streamer_read_hwi (ib);
+ result = ggc_alloc_zone_cleared_tree_node_stat (&tree_zone,
+ (len - 1) * sizeof (tree)
+ + sizeof (struct tree_vector));
+ TREE_SET_CODE (result, VECTOR_CST);
+ }
else if (CODE_CONTAINS_STRUCT (code, TS_BINFO))
{
unsigned HOST_WIDE_INT len = streamer_read_uhwi (ib);
@@ -525,7 +533,9 @@ static void
lto_input_ts_vector_tree_pointers (struct lto_input_block *ib,
struct data_in *data_in, tree expr)
{
- TREE_VECTOR_CST_ELTS (expr) = streamer_read_chain (ib, data_in);
+ unsigned i;
+ for (i = 0; i < VECTOR_CST_NELTS (expr); ++i)
+ VECTOR_CST_ELT (expr, i) = stream_read_tree (ib, data_in);
}