lto.c (uniquify_nodes): Move code to register decls to the loop that computes canonical types.

* lto.c (uniquify_nodes): Move code to register decls to
	the loop that computes canonical types.

From-SVN: r174745
This commit is contained in:
Diego Novillo
2011-06-07 10:11:05 -04:00
committed by Diego Novillo
parent 1dcad07971
commit 28628ea69f
2 changed files with 21 additions and 20 deletions
+5
View File
@@ -1,3 +1,8 @@
2011-06-07 Diego Novillo <dnovillo@google.com>
* lto.c (uniquify_nodes): Move code to register decls to
the loop that computes canonical types.
2011-06-07 Richard Guenther <rguenther@suse.de>
* lto-lang.c (lto_init): Do not set
+16 -20
View File
@@ -651,21 +651,13 @@ uniquify_nodes (struct data_in *data_in, unsigned from)
/* Go backwards because children streamed for the first time come
as part of their parents, and hence are created after them. */
/* First register all declarations and types in the cache.
This makes sure to have the original structure in the type cycles
when registering them and computing hashes. */
/* First register all the types in the cache. This makes sure to
have the original structure in the type cycles when registering
them and computing hashes. */
for (i = len; i-- > from;)
{
tree t = VEC_index (tree, cache->nodes, i);
if (t == NULL_TREE)
continue;
if (TREE_CODE (t) == VAR_DECL)
lto_register_var_decl_in_symtab (data_in, t);
else if (TREE_CODE (t) == FUNCTION_DECL && !DECL_BUILT_IN (t))
lto_register_function_decl_in_symtab (data_in, t);
else if (TYPE_P (t))
if (t && TYPE_P (t))
gimple_register_type (t);
}
@@ -788,19 +780,23 @@ uniquify_nodes (struct data_in *data_in, unsigned from)
}
}
/* Finally compute the canonical type of t. From this point
there are no longer any types with TYPE_STRUCTURAL_EQUALITY_P
and its type-based alias problems. This step requires the
TYPE_POINTER_TO lists being present, so make sure it is done
last. */
/* Finally compute the canonical type of all TREE_TYPEs and register
VAR_DECL and FUNCTION_DECL nodes in the symbol table.
From this point there are no longer any types with
TYPE_STRUCTURAL_EQUALITY_P and its type-based alias problems.
This step requires the TYPE_POINTER_TO lists being present, so
make sure it is done last. */
for (i = len; i-- > from;)
{
tree t = VEC_index (tree, cache->nodes, i);
if (!t
|| !TYPE_P (t))
if (t == NULL_TREE)
continue;
if (!TYPE_CANONICAL (t))
if (TREE_CODE (t) == VAR_DECL)
lto_register_var_decl_in_symtab (data_in, t);
else if (TREE_CODE (t) == FUNCTION_DECL && !DECL_BUILT_IN (t))
lto_register_function_decl_in_symtab (data_in, t);
else if (TYPE_P (t) && !TYPE_CANONICAL (t))
TYPE_CANONICAL (t) = gimple_register_canonical_type (t);
}
}