No, even if the target dtor is implemented the derived class will have extra padding it needs to unpoison. Consider: struct A { virtual ~A(); int x[1]; int y[1]; }; struct B { virtual ~B(); int z[1]; int w[1]; }; B::~B() {} The B dtor must unpoison the padding between z and w. http://reviews.llvm.org/D6038