aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <merrill@gnu.org>1994-10-11 18:39:14 +0000
committerJason Merrill <merrill@gnu.org>1994-10-11 18:39:14 +0000
commitfef71f9d2bc4f87bd2ea6c8874a00f76ba8b0676 (patch)
tree3e64b11a8ba75ca45648f846dde142d59919c11b
parent3536cd7e049cff68dfc38f6c660a0e88fe0c439c (diff)
downloadgcc-fef71f9d2bc4f87bd2ea6c8874a00f76ba8b0676.zip
gcc-fef71f9d2bc4f87bd2ea6c8874a00f76ba8b0676.tar.gz
gcc-fef71f9d2bc4f87bd2ea6c8874a00f76ba8b0676.tar.bz2
(resolve_offset_ref): Fix types used in resolving .*
expressions. From-SVN: r8252
-rw-r--r--gcc/cp/init.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index 08f33c0..e0905c6 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -2306,9 +2306,11 @@ resolve_offset_ref (exp)
{
basetype = TYPE_OFFSET_BASETYPE (TREE_TYPE (member));
addr = convert_pointer_to (basetype, addr);
- member = convert (ptr_type_node, build_unary_op (ADDR_EXPR, member, 0));
+ member = convert (ptrdiff_type_node,
+ build_unary_op (ADDR_EXPR, member, 0));
return build1 (INDIRECT_REF, type,
- build (PLUS_EXPR, ptr_type_node, addr, member));
+ build (PLUS_EXPR, build_pointer_type (type),
+ addr, member));
}
else if (TYPE_PTRMEMFUNC_P (TREE_TYPE (member)))
{