1 // { dg-do assemble  }
2 // GROUPS passed visibility
3 extern "C" int printf( const char *, ...);
4 
5 class B {
6 public:
B()7         B() { }
~B()8         virtual ~B() { printf( "B::~B\n"); }
9 };
10 
11 class D : public B {
12 public:
~D()13         virtual ~D() { printf( "D::~D\n"); }
14   void operator = ( int i) { this->~B(); }
15 };
16 
17 int
main()18 main()
19 {
20         D * pd = new D;
21         B * pb = pd;
22         delete pb;
23         return 0;
24 }
25