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
This commit is contained in:
Jason Merrill 1997-12-15 07:24:29 +00:00 committed by Jason Merrill
parent 6d8ccdbbb2
commit 5c0ad67204
3 changed files with 23 additions and 2 deletions

View file

@ -1,3 +1,10 @@
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

View file

@ -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

View file

@ -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);