1 // { dg-do run }
2 
3 extern "C" void abort ();
4 
5 struct A
6 {
7   inline ~A ();
fooA8   virtual void foo () {}
9 };
10 
11 struct B : A
12 {
fooB13   virtual void foo () { abort(); }
14 };
15 
middleman(A * a)16 static inline void middleman (A *a)
17 {
18   a->foo ();
19 }
20 
~A()21 inline A::~A ()
22 {
23   middleman (this);
24 }
25 
main()26 int main ()
27 {
28    B b;
29    return 0;
30 }
31