[clang] [ItaniumMangle] Use mangleType instead of mangleNameOrStandardSubstitution in mangleCXXCtorVTable function (PR #109970)

Matheus Izvekov via cfe-commits cfe-commits at lists.llvm.org
Wed Sep 25 22:28:28 PDT 2024


================
@@ -7326,11 +7326,13 @@ void ItaniumMangleContextImpl::mangleCXXCtorVTable(const CXXRecordDecl *RD,
                                                    raw_ostream &Out) {
   // <special-name> ::= TC <type> <offset number> _ <base type>
   CXXNameMangler Mangler(*this, Out);
+  QualType RDType = getASTContext().getRecordType(RD);
+  QualType TypeType = getASTContext().getRecordType(Type);
   Mangler.getStream() << "_ZTC";
-  Mangler.mangleNameOrStandardSubstitution(RD);
+  Mangler.mangleType(RDType);
----------------
mizvekov wrote:

Yes, although as I said before, there should be no observable change for these other users, as we don't perform other manglings either before or after calling `mangleNameOrStandardSubstitution`.

I would prefer the ergonomics of a function which takes a CXXRecordDecl. MangleType is also more complex and  will perform a bunch of checks which are not necessary if you only would ever have a RecordType, so there is also some aspect of micro-optimization and ease of debugging in having a specialized function.

https://github.com/llvm/llvm-project/pull/109970


More information about the cfe-commits mailing list