11541Srgrimes// Copyright (C) 2000 Free Software Foundation, Inc. 21541Srgrimes// Contributed by Nathan Sidwell 4 February 2001 <nathan@codesourcery.com> 31541Srgrimes 41541Srgrimes// Check primary bases are chosen correctly. 51541Srgrimes 61541Srgrimesstruct A {virtual void Foo () {}}; 71541Srgrimesstruct B1 : virtual A {}; 81541Srgrimesstruct B2 : virtual A {}; 91541Srgrimesstruct C : virtual B1, B2 {}; 101541Srgrimesstruct D : virtual C {}; 111541Srgrimes 121541Srgrimesint main () 131541Srgrimes{ 141541Srgrimes C c; 151541Srgrimes D d; 161541Srgrimes 171541Srgrimes A *apc = &c; 181541Srgrimes B1 *b1pc = &c; 191541Srgrimes B2 *b2pc = &c; 201541Srgrimes 211541Srgrimes A *apd = &d; 221541Srgrimes B1 *b1pd = &d; 231541Srgrimes B2 *b2pd = &d; 241541Srgrimes C *cpd = &d; 251541Srgrimes 261541Srgrimes#if __GXX_ABI_VERSION >= 100 271541Srgrimes if (static_cast <void *> (apc) != static_cast <void *> (b1pc)) 281541Srgrimes return 1; 291541Srgrimes if (static_cast <void *> (&c) != static_cast <void *> (b2pc)) 301541Srgrimes return 2; 311541Srgrimes if (static_cast <void *> (b1pc) == static_cast <void *> (b2pc)) 321541Srgrimes return 3; 331541Srgrimes 341541Srgrimes if (static_cast <void *> (apd) != static_cast <void *> (b1pd)) 351541Srgrimes return 11; 361541Srgrimes if (static_cast <void *> (b2pd) != static_cast <void *> (&d)) 371541Srgrimes return 12; 3822521Sdyson if (static_cast <void *> (b2pd) != static_cast <void *> (cpd)) 3921673Sjkh return 13; 401541Srgrimes if (static_cast <void *> (b1pd) == static_cast <void *> (b2pd)) 411541Srgrimes return 14; 421541Srgrimes#endif 431541Srgrimes return 0; 441541Srgrimes} 451541Srgrimes