search.c (is_subobject_of_p): Make sure we're looking at the right baseclasses.
* search.c (is_subobject_of_p): Make sure we're looking at the right baseclasses. From-SVN: r26669
This commit is contained in:
parent
93dfdf16a5
commit
86eab6f69a
@ -1,3 +1,8 @@
|
||||
1999-04-26 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* search.c (is_subobject_of_p): Make sure we're looking at the
|
||||
right baseclasses.
|
||||
|
||||
1999-04-26 Marc Espie <espie@cvs.openbsd.org>
|
||||
|
||||
* Make-lang.in (cplib2.ready): Don't depend on phony targets.
|
||||
|
@ -1065,13 +1065,17 @@ is_subobject_of_p (parent, binfo)
|
||||
tree binfos;
|
||||
int i, n_baselinks;
|
||||
|
||||
/* We want to canonicalize for comparison purposes. But, when we
|
||||
iterate through basetypes later, we want the binfos from the
|
||||
original hierarchy. That's why we have to calculate BINFOS
|
||||
first, and then canonicalize. */
|
||||
binfos = BINFO_BASETYPES (binfo);
|
||||
parent = canonical_binfo (parent);
|
||||
binfo = canonical_binfo (binfo);
|
||||
|
||||
if (parent == binfo)
|
||||
return 1;
|
||||
|
||||
binfos = BINFO_BASETYPES (binfo);
|
||||
n_baselinks = binfos ? TREE_VEC_LENGTH (binfos) : 0;
|
||||
|
||||
/* Process and/or queue base types. */
|
||||
|
37
gcc/testsuite/g++.old-deja/g++.other/lookup15.C
Normal file
37
gcc/testsuite/g++.old-deja/g++.other/lookup15.C
Normal file
@ -0,0 +1,37 @@
|
||||
// Build don't link:
|
||||
// Origin: Benjamin Kosnik <bkoz@cygnus.com>
|
||||
|
||||
class b
|
||||
{
|
||||
int j;
|
||||
public:
|
||||
b(int a = 6): j(a) {}
|
||||
void imbue(int a) {++j;}
|
||||
};
|
||||
|
||||
class d: public b
|
||||
{
|
||||
int k;
|
||||
public:
|
||||
d(int a = 7): b(a), k(a) {}
|
||||
void imbue(int a) {++k;}
|
||||
};
|
||||
|
||||
//virtual public kills, public ok
|
||||
class mostd: virtual public d
|
||||
{
|
||||
int l;
|
||||
public:
|
||||
mostd(int a = 9): d(a), l(a) {}
|
||||
};
|
||||
|
||||
int main() {
|
||||
|
||||
d dobj;
|
||||
dobj.imbue(5);
|
||||
|
||||
mostd mobj;
|
||||
mobj.imbue(5);
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user