/* { dg-do compile } */
/* { dg-options "-O3 -fdump-tree-optimized"  } */
struct B {
        B* self;
        B() : self( this ) { self->f(); }
        virtual void f() = 0;
    };
    struct D : B
    {
        void f() {}
    };
    int main()
    {
        D d;
    }
/* { dg-final { scan-tree-dump "cxa_pure_virtual" "optimized"} } */