Commit 5c0ad672 by Jason Merrill Committed by Jason Merrill

cvt.c (cp_convert_to_pointer): Fix base conversion of pm's.

	* cvt.c (cp_convert_to_pointer): Fix base conversion of pm's.

	* pt.c (type_unification_real): Change __null to type void* with
	a warning.

From-SVN: r17098
parent 6d8ccdbb
Sun Dec 14 22:34:20 1997 Jason Merrill <jason@yorick.cygnus.com>
* cvt.c (cp_convert_to_pointer): Fix base conversion of pm's.
* pt.c (type_unification_real): Change __null to type void* with
a warning.
Sun Dec 14 20:38:35 1997 Mark Mitchell <mmitchell@usa.net>
* call.c (implicit_conversion): Don't call
......
......@@ -258,11 +258,19 @@ cp_convert_to_pointer (type, expr)
{
tree b1 = TYPE_OFFSET_BASETYPE (TREE_TYPE (type));
tree b2 = TYPE_OFFSET_BASETYPE (TREE_TYPE (intype));
tree binfo = get_binfo (b1, b2, 1);
tree binfo = get_binfo (b2, b1, 1);
enum tree_code code = PLUS_EXPR;
if (binfo == NULL_TREE)
binfo = get_binfo (b2, b1, 1);
{
binfo = get_binfo (b1, b2, 1);
code = MINUS_EXPR;
}
if (binfo == error_mark_node)
return error_mark_node;
if (binfo && ! TREE_VIA_VIRTUAL (binfo))
expr = size_binop (code, expr, BINFO_OFFSET (binfo));
}
if (TREE_CODE (TREE_TYPE (intype)) == METHOD_TYPE
......
......@@ -3722,6 +3722,12 @@ type_unification_real (tparms, targs, parms, args, nsubsts, subr,
arg = TREE_TYPE (arg);
}
#endif
if (! flag_ansi && arg == TREE_TYPE (null_node))
{
warning ("using type void* for NULL");
arg = ptr_type_node;
}
if (! subr && TREE_CODE (arg) == REFERENCE_TYPE)
arg = TREE_TYPE (arg);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment