Fix test-suite fallout of default -Wreturn-type.
[official-gcc.git] / gcc / testsuite / g++.dg / ipa / pr46287-3.C
blob5f291ce1f63571cf42b2c76c18cc1f6e668437f0
1 // Check that indirect calls to thunks do not lead to errors.
2 // { dg-do run }
3 // { dg-options "-O -fipa-cp" }
5 extern "C" void abort ();
7 class A
9 public:
10   virtual void foo () {abort();}
13 class B : public A
15 public:
16   int z;
17   virtual void foo () {abort();}
20 class C : public A
22 public:
23   void *a[32];
24   unsigned long b;
25   long c[32];
27   virtual void foo () {abort();}
30 class D : public C, public B
32 public:
33   D () : C(), B()
34   {
35     int i;
36     for (i = 0; i < 32; i++)
37       {
38         a[i] = (void *) 0;
39         c[i] = 0;
40       }
41     b = 0xaaaa;
42   }
44   virtual void foo ();
47 void D::foo()
49   if (b != 0xaaaa)
50     abort();
53 static void bar (B &b)
56   b.foo ();
59 int main()
61   int i;
62   D d;
64   for (i = 0; i < 5000; i++)
65     bar (d);
66   return 0;