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