@@ -1780,7 +1780,7 @@ lto_output_tree (struct output_block *ob, tree expr,
it. */
if (!existed_p)
lto_output_tree_1 (ob, expr, 0, ref_p, this_ref_p);
- else
+ else if (this_ref_p)
{
if (streamer_dump_file)
{
@@ -1955,25 +1955,19 @@ lto_read_decls (struct lto_file_decl_data *decl_data, const void *data,
else
{
t = lto_input_tree_1 (&ib_main, data_in, tag, 0);
- /* We streamed in new tree. Add it to cache and process dref. */
- if (data_in->reader_cache->nodes.length () == from + 1)
+ gcc_assert (data_in->reader_cache->nodes.length () == from + 1);
+ num_unshared_trees_read++;
+ data_in->location_cache.accept_location_cache ();
+ process_dref (data_in, t, from);
+ if (TREE_CODE (t) == IDENTIFIER_NODE
+ || (TREE_CODE (t) == INTEGER_CST
+ && !TREE_OVERFLOW (t)))
+ ;
+ else
{
- num_unshared_trees_read++;
- data_in->location_cache.accept_location_cache ();
- process_dref (data_in, t, from);
- if (TREE_CODE (t) == IDENTIFIER_NODE
- || (TREE_CODE (t) == INTEGER_CST
- && !TREE_OVERFLOW (t)))
- ;
- else
- {
- lto_maybe_register_decl (data_in, t, from);
- process_new_tree (t, &hm, from, &total, data_in);
- }
+ lto_maybe_register_decl (data_in, t, from);
+ process_new_tree (t, &hm, from, &total, data_in);
}
- else
- /* FIXME: It seems useless to pickle stray references. */
- gcc_assert (data_in->reader_cache->nodes.length () == from);
}
}