aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2015-04-24 15:11:45 -0400
committerJason Merrill <jason@gcc.gnu.org>2015-04-24 15:11:45 -0400
commitc6f044f7664a1659618e0585c703036f472a1caa (patch)
treefcec492840a88dd43e1c97bfb438cc31723cd5fe
parent6f96dcebb22a03fd4df64a18c13c5bbc1cee8a76 (diff)
downloadgcc-c6f044f7664a1659618e0585c703036f472a1caa.zip
gcc-c6f044f7664a1659618e0585c703036f472a1caa.tar.gz
gcc-c6f044f7664a1659618e0585c703036f472a1caa.tar.bz2
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
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/cp/ChangeLog3
-rw-r--r--gcc/cp/typeck.c1
-rw-r--r--gcc/tree.c4
4 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1995751b..b4b0490 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 767094d4..7c7ec09 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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.
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 250b5d6..91db32a 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 497b1452..daf0292 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);