Rebase.
[official-gcc.git] / gcc / testsuite / g++.dg / ipa / pr46287-2.C
blob272852bad7f96129e6f7941212e7188baf3b8b2a
1 // Check that indirect calls to thunks do not lead to errors.
2 // { dg-do run }
3 // { dg-options "-O -finline -finline-small-functions -finline-functions" }
6 extern "C" void abort ();
8 class A
10 public:
11   virtual void foo () {abort();}
14 class B : public A
16 public:
17   int z;
18   virtual void foo () {abort();}
21 class C : public A
23 public:
24   void *a[32];
25   unsigned long b;
26   long c[32];
28   virtual void foo () {abort();}
31 class D : public C, public B
33 public:
34   D () : C(), B()
35   {
36     int i;
37     for (i = 0; i < 32; i++)
38       {
39         a[i] = (void *) 0;
40         c[i] = 0;
41       }
42     b = 0xaaaa;
43   }
45   virtual void foo ();
48 void D::foo()
50   if (b != 0xaaaa)
51     abort();
54 static inline void bar (B &b)
57   b.foo ();
60 int main()
62   int i;
63   D d;
65   for (i = 0; i < 5000; i++)
66     bar (d);
67   return 0;