+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,
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]
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. */