1 // { dg-do run } 2 3 extern "C" void abort (); 4 5 class A 6 { 7 public: foo()8 virtual void foo () {abort();} 9 }; 10 11 class B : public A 12 { 13 public: 14 int z; foo()15 virtual void foo () {abort();} 16 }; 17 18 class C : public A 19 { 20 public: 21 void *a[32]; 22 unsigned long b; 23 long c[32]; 24 foo()25 virtual void foo () {abort();} 26 }; 27 28 class D : public C, public B 29 { 30 public: D()31 D () : C(), B() 32 { 33 int i; 34 for (i = 0; i < 32; i++) 35 { 36 a[i] = (void *) 0; 37 c[i] = 0; 38 } 39 b = 0xaaaa; 40 } 41 42 virtual void foo (); 43 }; 44 foo()45void D::foo() 46 { 47 if (b != 0xaaaa) 48 abort(); 49 } 50 bar(B & b)51static inline void bar (B &b) 52 { 53 b.foo (); 54 } 55 main()56int main() 57 { 58 D d; 59 bar (d); 60 return 0; 61 } 62