Commit aec06f6f by Richard Biener Committed by Richard Biener

re PR lto/54898 (ICE in uniquify_nodes, at lto/lto.c:1898)

2012-10-12  Richard Biener  <rguenther@suse.de>

	PR lto/54898
	* lto.c (gimple_types_compatible_p_1): Also compare
	TYPE_MAIN_VARIANT.
	(iterative_hash_gimple_type): Also hash TYPE_MAIN_VARIANT.

From-SVN: r192397
parent 87218838
2012-10-12 Richard Biener <rguenther@suse.de>
PR lto/54898
* lto.c (gimple_types_compatible_p_1): Also compare
TYPE_MAIN_VARIANT.
(iterative_hash_gimple_type): Also hash TYPE_MAIN_VARIANT.
2012-10-09 Tobias Burnus <burnus@net-b.de>
* lto-lang.c (lto_register_builtin_type): Avoid useless
......
......@@ -581,6 +581,15 @@ gimple_types_compatible_p_1 (tree t1, tree t2, type_pair_t p,
if (!compare_type_names_p (t1, t2))
goto different_types;
/* The main variant of both types should compare equal. */
if (TYPE_MAIN_VARIANT (t1) != t1
|| TYPE_MAIN_VARIANT (t2) != t2)
{
if (!gtc_visit (TYPE_MAIN_VARIANT (t1), TYPE_MAIN_VARIANT (t2),
state, sccstack, sccstate, sccstate_obstack))
goto different_types;
}
/* We may not merge typedef types to the same type in different
contexts. */
if (TYPE_NAME (t1)
......@@ -1101,6 +1110,12 @@ iterative_hash_gimple_type (tree type, hashval_t val,
&& TYPE_P (DECL_CONTEXT (TYPE_NAME (type))))
v = visit (DECL_CONTEXT (TYPE_NAME (type)), state, v,
sccstack, sccstate, sccstate_obstack);
/* Factor in the variant structure. */
if (TYPE_MAIN_VARIANT (type) != type)
v = visit (TYPE_MAIN_VARIANT (type), state, v,
sccstack, sccstate, sccstate_obstack);
v = iterative_hash_hashval_t (TREE_CODE (type), v);
v = iterative_hash_hashval_t (TYPE_QUALS (type), v);
v = iterative_hash_hashval_t (TREE_ADDRESSABLE (type), v);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment