Commit 5e83f17d by Jan Hubicka Committed by Jan Hubicka

ipa-icf.c (sem_item::add_type): Do not look for TYPE_CANONICAL...


	* ipa-icf.c (sem_item::add_type): Do not look for TYPE_CANONICAL;
	do not check AGGREGATE_TYPE_P when adding TYPE_MODE;
	Check that all record types are complete.
	* ipa-icf-gimple.c (func_checker::compatible_types_p): Do not
	compare alias sets for types w/o alias sets.

From-SVN: r230698
parent 65310691
2015-11-07 Jan Hubicka <hubicka@ucw.cz>
* ipa-icf.c (sem_item::add_type): Do not look for TYPE_CANONICAL;
do not check AGGREGATE_TYPE_P when adding TYPE_MODE;
Check that all record types are complete.
* ipa-icf-gimple.c (func_checker::compatible_types_p): Do not
compare alias sets for types w/o alias sets.
2015-11-20 Eric Botcazou <ebotcazou@adacore.com>
* config/sparc/sparc.md (umulxhi_vis): Move around.
......@@ -233,7 +233,15 @@ func_checker::compatible_types_p (tree t1, tree t2)
if (!types_compatible_p (t1, t2))
return return_false_with_msg ("types are not compatible");
if (get_alias_set (t1) != get_alias_set (t2))
/* We do a lot of unnecesary matching of types that are not being
accessed and thus do not need to be compatible. In longer term we should
remove these checks on all types which are not accessed as memory
locations.
For time being just avoid calling get_alias_set on types that are not
having alias sets defined at all. */
if (type_with_alias_set_p (t1) && type_with_alias_set_p (t2)
&& get_alias_set (t1) != get_alias_set (t2))
return return_false_with_msg ("alias sets are different");
return true;
......
......@@ -1543,11 +1543,8 @@ sem_item::add_type (const_tree type, inchash::hash &hstate)
}
type = TYPE_MAIN_VARIANT (type);
if (TYPE_CANONICAL (type))
type = TYPE_CANONICAL (type);
if (!AGGREGATE_TYPE_P (type))
hstate.add_int (TYPE_MODE (type));
hstate.add_int (TYPE_MODE (type));
if (TREE_CODE (type) == COMPLEX_TYPE)
{
......@@ -1574,6 +1571,7 @@ sem_item::add_type (const_tree type, inchash::hash &hstate)
}
else if (RECORD_OR_UNION_TYPE_P (type))
{
gcc_checking_assert (COMPLETE_TYPE_P (type));
hashval_t *val = optimizer->m_type_hash_cache.get (type);
if (!val)
......
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