// { dg-do run } // Copyright (C) 2000 Free Software Foundation, Inc. // Contributed by Nathan Sidwell 4 February 2001 // 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 (apc) != static_cast (b1pc)) return 1; if (static_cast (&c) != static_cast (b2pc)) return 2; if (static_cast (b1pc) == static_cast (b2pc)) return 3; if (static_cast (apd) != static_cast (b1pd)) return 11; if (static_cast (b2pd) != static_cast (&d)) return 12; if (static_cast (b2pd) != static_cast (cpd)) return 13; if (static_cast (b1pd) == static_cast (b2pd)) return 14; #endif return 0; }