Commit bec17cf3 by Jason Merrill Committed by Jason Merrill

* typeck.c (comp_target_types): Fix PMFs.

From-SVN: r19383
parent 04a81d94
Thu Apr 23 09:32:58 1998 Jason Merrill <jason@yorick.cygnus.com>
* typeck.c (comp_target_types): Fix PMFs.
Wed Apr 22 13:24:48 1998 Mark Mitchell <mmitchell@usa.net> Wed Apr 22 13:24:48 1998 Mark Mitchell <mmitchell@usa.net>
* class.c (finish_struct): Set TREE_PRIVATE and TREE_PROTECTED for * class.c (finish_struct): Set TREE_PRIVATE and TREE_PROTECTED for
......
...@@ -959,6 +959,9 @@ comp_target_types (ttl, ttr, nptrs) ...@@ -959,6 +959,9 @@ comp_target_types (ttl, ttr, nptrs)
return comp_array_types (comp_target_types, ttl, ttr, 0); return comp_array_types (comp_target_types, ttl, ttr, 0);
else if (TREE_CODE (ttr) == FUNCTION_TYPE || TREE_CODE (ttr) == METHOD_TYPE) else if (TREE_CODE (ttr) == FUNCTION_TYPE || TREE_CODE (ttr) == METHOD_TYPE)
{ {
tree argsl, argsr;
int saw_contra = 0;
if (pedantic) if (pedantic)
{ {
if (comptypes (TREE_TYPE (ttl), TREE_TYPE (ttr), 1) == 0) if (comptypes (TREE_TYPE (ttl), TREE_TYPE (ttr), 1) == 0)
...@@ -966,12 +969,45 @@ comp_target_types (ttl, ttr, nptrs) ...@@ -966,12 +969,45 @@ comp_target_types (ttl, ttr, nptrs)
} }
else else
{ {
if (comp_target_types (TREE_TYPE (ttl), TREE_TYPE (ttr), -1) == 0) switch (comp_target_types (TREE_TYPE (ttl), TREE_TYPE (ttr), -1))
return 0; {
case 0:
return 0;
case -1:
saw_contra = 1;
}
} }
return comp_target_parms (TYPE_ARG_TYPES (ttl), argsl = TYPE_ARG_TYPES (ttl);
TYPE_ARG_TYPES (ttr), 1); argsr = TYPE_ARG_TYPES (ttr);
/* Compare 'this' here, not in comp_target_parms. */
if (TREE_CODE (ttr) == METHOD_TYPE)
{
tree tl = TYPE_METHOD_BASETYPE (ttl);
tree tr = TYPE_METHOD_BASETYPE (ttr);
if (comptypes (tr, tl, 0) == 0)
{
if (comptypes (tl, tr, 0))
saw_contra = 1;
else
return 0;
}
argsl = TREE_CHAIN (argsl);
argsr = TREE_CHAIN (argsr);
}
switch (comp_target_parms (argsl, argsr, 1))
{
case 0:
return 0;
case -1:
saw_contra = 1;
}
return saw_contra ? -1 : 1;
} }
/* for C++ */ /* for C++ */
else if (TREE_CODE (ttr) == OFFSET_TYPE) else if (TREE_CODE (ttr) == OFFSET_TYPE)
......
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