@@ -464,7 +464,7 @@ class CXXNameMangler {
464464 void mangleSeqID (unsigned SeqID);
465465 void mangleName (GlobalDecl GD);
466466 void mangleType (QualType T);
467- void mangleNameOrStandardSubstitution (const NamedDecl *ND );
467+ void mangleCXXRecordDecl (const CXXRecordDecl *Record );
468468 void mangleLambdaSig (const CXXRecordDecl *Lambda);
469469 void mangleModuleNamePrefix (StringRef Name, bool IsPartition = false );
470470 void mangleVendorQualifier (StringRef Name);
@@ -3029,9 +3029,11 @@ void CXXNameMangler::mangleType(QualType T) {
30293029 addSubstitution (T);
30303030}
30313031
3032- void CXXNameMangler::mangleNameOrStandardSubstitution (const NamedDecl *ND) {
3033- if (!mangleStandardSubstitution (ND))
3034- mangleName (ND);
3032+ void CXXNameMangler::mangleCXXRecordDecl (const CXXRecordDecl *Record) {
3033+ if (mangleSubstitution (Record))
3034+ return ;
3035+ mangleName (Record);
3036+ addSubstitution (Record);
30353037}
30363038
30373039void CXXNameMangler::mangleType (const BuiltinType *T) {
@@ -7309,15 +7311,15 @@ void ItaniumMangleContextImpl::mangleCXXVTable(const CXXRecordDecl *RD,
73097311 // <special-name> ::= TV <type> # virtual table
73107312 CXXNameMangler Mangler (*this , Out);
73117313 Mangler.getStream () << " _ZTV" ;
7312- Mangler.mangleNameOrStandardSubstitution (RD);
7314+ Mangler.mangleCXXRecordDecl (RD);
73137315}
73147316
73157317void ItaniumMangleContextImpl::mangleCXXVTT (const CXXRecordDecl *RD,
73167318 raw_ostream &Out) {
73177319 // <special-name> ::= TT <type> # VTT structure
73187320 CXXNameMangler Mangler (*this , Out);
73197321 Mangler.getStream () << " _ZTT" ;
7320- Mangler.mangleNameOrStandardSubstitution (RD);
7322+ Mangler.mangleCXXRecordDecl (RD);
73217323}
73227324
73237325void ItaniumMangleContextImpl::mangleCXXCtorVTable (const CXXRecordDecl *RD,
@@ -7327,10 +7329,10 @@ void ItaniumMangleContextImpl::mangleCXXCtorVTable(const CXXRecordDecl *RD,
73277329 // <special-name> ::= TC <type> <offset number> _ <base type>
73287330 CXXNameMangler Mangler (*this , Out);
73297331 Mangler.getStream () << " _ZTC" ;
7330- Mangler.mangleNameOrStandardSubstitution (RD);
7332+ Mangler.mangleCXXRecordDecl (RD);
73317333 Mangler.getStream () << Offset;
73327334 Mangler.getStream () << ' _' ;
7333- Mangler.mangleNameOrStandardSubstitution (Type);
7335+ Mangler.mangleCXXRecordDecl (Type);
73347336}
73357337
73367338void ItaniumMangleContextImpl::mangleCXXRTTI (QualType Ty, raw_ostream &Out) {
0 commit comments