blob: 3ebc3ec0de74c1eee7a280eb64bdf19ad9e4791e [file] [log] [blame]
// { dg-do run }
// Copyright (C) 2000 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 4 February 2001 <nathan@codesourcery.com>
// Check primary bases are chosen correctly.
struct A {virtual void Foo () {}};
struct B1 : virtual A {};
struct B2 : virtual A {};
struct C : virtual B1, B2 {};
struct D : virtual C {};
int main ()
{
C c;
D d;
A *apc = &c;
B1 *b1pc = &c;
B2 *b2pc = &c;
A *apd = &d;
B1 *b1pd = &d;
B2 *b2pd = &d;
C *cpd = &d;
#if __GXX_ABI_VERSION >= 100
if (static_cast <void *> (apc) != static_cast <void *> (b1pc))
return 1;
if (static_cast <void *> (&c) != static_cast <void *> (b2pc))
return 2;
if (static_cast <void *> (b1pc) == static_cast <void *> (b2pc))
return 3;
if (static_cast <void *> (apd) != static_cast <void *> (b1pd))
return 11;
if (static_cast <void *> (b2pd) != static_cast <void *> (&d))
return 12;
if (static_cast <void *> (b2pd) != static_cast <void *> (cpd))
return 13;
if (static_cast <void *> (b1pd) == static_cast <void *> (b2pd))
return 14;
#endif
return 0;
}