http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58678
--- Comment #13 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- The issue from comment 9 is indeed the same problem. markus@x4 tmp % cat test.ii class Part { public: virtual ~Part(); }; class A : Part {}; void fn1() { A *a; delete a; } markus@x4 tmp % g++ -O2 -c test.ii markus@x4 tmp % nm test.o | c++filt 0000000000000000 T fn1() U operator delete(void*) 0000000000000000 W A::~A() 0000000000000000 W A::~A() 0000000000000000 W A::~A() 0000000000000000 n A::~A() U Part::~Part() 0000000000000000 V typeinfo for A U typeinfo for Part 0000000000000000 V typeinfo name for A 0000000000000000 V vtable for A U vtable for __cxxabiv1::__vmi_class_type_info markus@x4 tmp % /usr/x86_64-pc-linux-gnu/gcc-bin/4.8.3/g++ -O2 -c test.ii markus@x4 tmp % nm test.o | c++filt 0000000000000000 T fn1() markus@x4 tmp %