search.c (convert_pointer_to_single_level): Reimplement without using get_binfo.
* search.c (convert_pointer_to_single_level): Reimplement without using get_binfo. From-SVN: r27395
This commit is contained in:
parent
5c5b088851
commit
d1a4ff1555
@ -1,3 +1,8 @@
|
||||
1999-06-07 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* search.c (convert_pointer_to_single_level): Reimplement without
|
||||
using get_binfo.
|
||||
|
||||
1999-06-06 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* method.c (is_back_referenceable_type): Back-reference bools when
|
||||
|
@ -2057,17 +2057,29 @@ static tree
|
||||
convert_pointer_to_single_level (to_type, expr)
|
||||
tree to_type, expr;
|
||||
{
|
||||
tree derived;
|
||||
tree binfo_of_derived;
|
||||
tree last;
|
||||
int i;
|
||||
|
||||
binfo_of_derived = TYPE_BINFO (TREE_TYPE (TREE_TYPE (expr)));
|
||||
last = get_binfo (to_type, TREE_TYPE (TREE_TYPE (expr)), 0);
|
||||
my_friendly_assert (BINFO_INHERITANCE_CHAIN (last) == binfo_of_derived,
|
||||
980827);
|
||||
derived = TREE_TYPE (TREE_TYPE (expr));
|
||||
binfo_of_derived = TYPE_BINFO (derived);
|
||||
my_friendly_assert (BINFO_INHERITANCE_CHAIN (binfo_of_derived) == NULL_TREE,
|
||||
980827);
|
||||
return build_vbase_path (PLUS_EXPR, build_pointer_type (to_type), expr,
|
||||
last, 1);
|
||||
for (i = CLASSTYPE_N_BASECLASSES (derived) - 1; i >= 0; --i)
|
||||
{
|
||||
tree binfo = BINFO_BASETYPE (binfo_of_derived, i);
|
||||
my_friendly_assert (BINFO_INHERITANCE_CHAIN (binfo) == binfo_of_derived,
|
||||
980827);
|
||||
if (same_type_p (BINFO_TYPE (binfo), to_type))
|
||||
return build_vbase_path (PLUS_EXPR,
|
||||
build_pointer_type (to_type),
|
||||
expr, binfo, 1);
|
||||
}
|
||||
|
||||
my_friendly_abort (19990607);
|
||||
|
||||
/* NOTREACHED */
|
||||
return NULL_TREE;
|
||||
}
|
||||
|
||||
tree markedp (binfo, data)
|
||||
|
Loading…
Reference in New Issue
Block a user