re PR c++/50800 (Internal compiler error in finish_member_declarations, possibly...
authorJason Merrill <jason@redhat.com>
Fri, 24 Apr 2015 19:11:45 +0000 (15:11 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Fri, 24 Apr 2015 19:11:45 +0000 (15:11 -0400)
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
gcc/cp/ChangeLog
gcc/cp/typeck.c
gcc/tree.c

index 1995751..b4b0490 100644 (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
index 767094d..7c7ec09 100644 (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.
index 250b5d6..91db32a 100644 (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;
index 497b145..daf0292 100644 (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);