From c6f044f7664a1659618e0585c703036f472a1caa Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Fri, 24 Apr 2015 15:11:45 -0400 Subject: [PATCH] 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 --- gcc/ChangeLog | 7 +++++++ gcc/cp/ChangeLog | 3 +++ gcc/cp/typeck.c | 1 - gcc/tree.c | 4 ++-- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1995751b2c1..b4b0490303f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2015-04-24 Jason Merrill + + 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 * genrecog.c (validate_pattern): Check matching constraint refers diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 767094d42ab..7c7ec095c38 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2015-04-24 Jason Merrill + 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. diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 250b5d68767..91db32a7da9 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -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; diff --git a/gcc/tree.c b/gcc/tree.c index 497b14523bb..daf0292127f 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -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);