typeck.c (casts_away_constness, [...]): Strip both parts of pointer to data member...
authorJason Merrill <jason@yorick.cygnus.com>
Tue, 25 May 1999 11:55:58 +0000 (11:55 +0000)
committerJason Merrill <jason@gcc.gnu.org>
Tue, 25 May 1999 11:55:58 +0000 (07:55 -0400)
* typeck.c (casts_away_constness, casts_away_constness_r): Strip both
parts of pointer to data member types.

From-SVN: r27138

gcc/cp/ChangeLog
gcc/cp/typeck.c

index 835402f..36cb365 100644 (file)
@@ -1,3 +1,8 @@
+1999-05-25  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * typeck.c (casts_away_constness, casts_away_constness_r): Strip both
+       parts of pointer to data member types.
+
 1999-05-24  Mark Mitchell  <mark@codesourcery.com>
 
        * decl2.c (mark_vtable_entries): Don't make a copy of a function,
index 13a490b..ead755d 100644 (file)
@@ -7771,9 +7771,9 @@ casts_away_constness_r (t1, t2)
      pointer to member level is ignored when determining if a const
      cv-qualifier has been cast away.  */
   if (TYPE_PTRMEM_P (*t1))
-    *t1 = build_pointer_type (TREE_TYPE (*t1));
+    *t1 = build_pointer_type (TREE_TYPE (TREE_TYPE (*t1)));
   if (TYPE_PTRMEM_P (*t2))
-    *t2 = build_pointer_type (TREE_TYPE (*t2));
+    *t2 = build_pointer_type (TREE_TYPE (TREE_TYPE (*t2)));
 
   /* [expr.const.cast]
 
@@ -7844,8 +7844,9 @@ casts_away_constness (t1, t2)
        T2" casts away constness if a cast from an rvalue of type
        "poitner to T1" to the type "pointer to T2" casts away
        constness.  */
-    return casts_away_constness (build_pointer_type (TREE_TYPE (t1)),
-                                build_pointer_type (TREE_TYPE (t2)));
+    return casts_away_constness
+      (build_pointer_type (TREE_TYPE (TREE_TYPE (t1))),
+       build_pointer_type (TREE_TYPE (TREE_TYPE (t2))));
 
   /* Casting away constness is only something that makes sense for
      pointer or reference types.  */