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()45 void D::foo()
46 {
47   if (b != 0xaaaa)
48     abort();
49 }
50 
bar(B & b)51 static inline void bar (B &b)
52 {
53   b.foo ();
54 }
55 
main()56 int main()
57 {
58   D d;
59   bar (d);
60   return 0;
61 }
62