On Fri, Apr 12, 2013 at 2:42 PM, John McCall <[email protected]> wrote: > On Apr 12, 2013, at 10:59 AM, Reid Kleckner <[email protected]> wrote: >> On Wed, Apr 10, 2013 at 4:12 PM, John McCall <[email protected]> wrote: >> I can indirect B through a non-virtual base, though: >> struct A { int a; }; >> struct B : virtual A { int b; }; >> struct C : virtual B { int c; }; >> struct BB : B { }; // Indirection =/ >> struct D : BB, C { int d; }; >> D d; // Force vbtable emission. >> >> That gives these manglings: >> >> ??_8B@@7B@ >> ??_8C@@7B0@@ >> ??_8C@@7BB@@@ >> ??_8BB@@7B@ >> >> // D's vbtables: >> ??_8D@@7B@ // installed inside the non-virtual B >> ??_8D@@7BC@@@ // installed inside C >> ??_8D@@7BB@@@ // installed inside virtual B > > I'm really not getting these manglings. The "...7BC..." in particular is > really > throwing me off; is the "B" there a literal part of the mangling rather than > a > class name?
It is annoying, but I think it means const. Mangler.getStream() << "7B"; // '7' for vbtable, 'B' for const. It's consistent with the other grammar comments and mangleQualifiers(). _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
