re PR middle-end/48849 (SPEC CPU 2000/2006 failed to build with LTO)

2011-05-20  Richard Guenther  <rguenther@suse.de>

	PR middle-end/48849
	* gimple.c (gimple_register_canonical_type): Compute TYPE_CANONICAL
	of pointer types the same way the middle-end does.

From-SVN: r173939
This commit is contained in:
Richard Guenther 2011-05-20 09:35:44 +00:00 committed by Richard Biener
parent fb291a1ea7
commit 0ea80a1603
2 changed files with 25 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2011-05-20 Richard Guenther <rguenther@suse.de>
PR middle-end/48849
* gimple.c (gimple_register_canonical_type): Compute TYPE_CANONICAL
of pointer types the same way the middle-end does.
2011-05-20 Richard Guenther <rguenther@suse.de> 2011-05-20 Richard Guenther <rguenther@suse.de>
* gimple.c (gimple_register_type_1): Do not fiddle with * gimple.c (gimple_register_type_1): Do not fiddle with

View File

@ -4801,6 +4801,25 @@ gimple_register_canonical_type (tree t)
if (TYPE_CANONICAL (t)) if (TYPE_CANONICAL (t))
return TYPE_CANONICAL (t); return TYPE_CANONICAL (t);
/* For pointer and reference types do as the middle-end does - the
canonical type is a pointer to the canonical pointed-to type. */
if (TREE_CODE (t) == POINTER_TYPE)
{
TYPE_CANONICAL (t)
= build_pointer_type_for_mode
(gimple_register_canonical_type (TREE_TYPE (t)),
TYPE_MODE (t), TYPE_REF_CAN_ALIAS_ALL (t));
return TYPE_CANONICAL (t);
}
else if (TREE_CODE (t) == REFERENCE_TYPE)
{
TYPE_CANONICAL (t)
= build_reference_type_for_mode
(gimple_register_canonical_type (TREE_TYPE (t)),
TYPE_MODE (t), TYPE_REF_CAN_ALIAS_ALL (t));
return TYPE_CANONICAL (t);
}
if (gimple_canonical_types == NULL) if (gimple_canonical_types == NULL)
gimple_canonical_types = htab_create_ggc (16381, gimple_canonical_type_hash, gimple_canonical_types = htab_create_ggc (16381, gimple_canonical_type_hash,
gimple_canonical_type_eq, 0); gimple_canonical_type_eq, 0);