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