https://stackoverflow.com/a/6614369/1091587 has a quick rundown of the destructor types (D0, D1, D2) that appear when you read the symbol table of a program compiled using “gcc3”-type name mangling. There are also corresponding constructors C0/C1/C2. With g++-4.7 (possibly earlier), there appears a new ctor/dtor pair, namely C5/D5, however only as a debugging symbol.
$ cat i.cpp
class X { public: virtual ~X() {}; };
int main(void) { X x; return 0; };
$ g++ -c i.cpp
$ nm i.o | grep 5
0000000000000000 n _ZN1XC5Ev
0000000000000000 n _ZN1XD5Ev
$ c++filt -n _ZN1XC5Ev _ZN1XD5Ev
X::X()
X::~X()
The demangler source calls the D5 object a “gnu_v3_object_dtor_group”, but what exactly is a dtor group and what is it good for? clang++-3.3 does not emit it, and http://gcc.gnu.org/ml/gcc-patches/2011-11/msg00383.html suggests it might have something to do with the new transactional memory feature in gcc.