Merge from branches/gcc-4_8-branch up to rev 207411.
[official-gcc.git] / gcc-4_8-branch / gcc / testsuite / g++.dg / torture / pr45699.C
blob828c1ef8e579a0a0fb1670768ed104b42afb3b85
1 // { dg-do run }
3 extern "C" void abort ();
5 class A
7 public:
8   virtual void foo () {abort();}
9 };
11 class B : public A
13 public:
14   int z;
15   virtual void foo () {abort();}
18 class C : public A
20 public:
21   void *a[32];
22   unsigned long b;
23   long c[32];
25   virtual void foo () {abort();}
28 class D : public C, public B
30 public:
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   }
42   virtual void foo ();
45 void D::foo()
47   if (b != 0xaaaa)
48     abort();
51 static inline void bar (B &b)
53   b.foo ();
56 int main()
58   D d;
59   bar (d);
60   return 0;