re PR c++/50800 (Internal compiler error in finish_member_declarations, possibly related to may_alias attribute)

PR c++/50800
gcc/
	* tree.c (build_reference_type_for_mode): Don't pass can_alias_all
	down when building TYPE_CANONICAL.
	(build_pointer_type_for_mode): Likewise.
gcc/cp/
	* typeck.c (structural_comptypes): Don't check TYPE_REF_CAN_ALIAS_ALL.

From-SVN: r222419
This commit is contained in:
Jason Merrill 2015-04-24 15:11:45 -04:00 committed by Jason Merrill
parent 6f96dcebb2
commit c6f044f766
4 changed files with 12 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2015-04-24 Jason Merrill <jason@redhat.com>
PR c++/50800
* tree.c (build_reference_type_for_mode): Don't pass can_alias_all
down when building TYPE_CANONICAL.
(build_pointer_type_for_mode): Likewise.
2015-04-24 Chen Gang <gang.chen.5i5j@gmail.com>
* genrecog.c (validate_pattern): Check matching constraint refers

View File

@ -1,5 +1,8 @@
2015-04-24 Jason Merrill <jason@redhat.com>
PR c++/50800
* typeck.c (structural_comptypes): Don't check TYPE_REF_CAN_ALIAS_ALL.
* constexpr.c (potential_constant_expression_1) [MINUS_EXPR]:
Remove obsolete code.
[NE_EXPR]: Likewise.

View File

@ -1310,7 +1310,6 @@ structural_comptypes (tree t1, tree t2, int strict)
case POINTER_TYPE:
if (TYPE_MODE (t1) != TYPE_MODE (t2)
|| TYPE_REF_CAN_ALIAS_ALL (t1) != TYPE_REF_CAN_ALIAS_ALL (t2)
|| !same_type_p (TREE_TYPE (t1), TREE_TYPE (t2)))
return false;
break;

View File

@ -7706,7 +7706,7 @@ build_pointer_type_for_mode (tree to_type, machine_mode mode,
else if (TYPE_CANONICAL (to_type) != to_type)
TYPE_CANONICAL (t)
= build_pointer_type_for_mode (TYPE_CANONICAL (to_type),
mode, can_alias_all);
mode, false);
/* Lay out the type. This function has many callers that are concerned
with expression-construction, and this simplifies them all. */
@ -7773,7 +7773,7 @@ build_reference_type_for_mode (tree to_type, machine_mode mode,
else if (TYPE_CANONICAL (to_type) != to_type)
TYPE_CANONICAL (t)
= build_reference_type_for_mode (TYPE_CANONICAL (to_type),
mode, can_alias_all);
mode, false);
layout_type (t);