Lines Matching refs:MangledName

43 static bool isMemberPointer(StringView MangledName, bool &Error) {  in isMemberPointer()  argument
45 switch (MangledName.popFront()) { in isMemberPointer()
68 if (startsWithDigit(MangledName)) { in isMemberPointer()
69 assert(MangledName[0] == '6' || MangledName[0] == '8'); in isMemberPointer()
70 return (MangledName[0] == '8'); in isMemberPointer()
75 MangledName.consumeFront('E'); // 64-bit in isMemberPointer()
76 MangledName.consumeFront('I'); // restrict in isMemberPointer()
77 MangledName.consumeFront('F'); // unaligned in isMemberPointer()
79 assert(!MangledName.empty()); in isMemberPointer()
82 switch (MangledName.front()) { in isMemberPointer()
100 consumeSpecialIntrinsicKind(StringView &MangledName) { in consumeSpecialIntrinsicKind() argument
101 if (MangledName.consumeFront("?_7")) in consumeSpecialIntrinsicKind()
103 if (MangledName.consumeFront("?_8")) in consumeSpecialIntrinsicKind()
105 if (MangledName.consumeFront("?_9")) in consumeSpecialIntrinsicKind()
107 if (MangledName.consumeFront("?_A")) in consumeSpecialIntrinsicKind()
109 if (MangledName.consumeFront("?_B")) in consumeSpecialIntrinsicKind()
111 if (MangledName.consumeFront("?_C")) in consumeSpecialIntrinsicKind()
113 if (MangledName.consumeFront("?_P")) in consumeSpecialIntrinsicKind()
115 if (MangledName.consumeFront("?_R0")) in consumeSpecialIntrinsicKind()
117 if (MangledName.consumeFront("?_R1")) in consumeSpecialIntrinsicKind()
119 if (MangledName.consumeFront("?_R2")) in consumeSpecialIntrinsicKind()
121 if (MangledName.consumeFront("?_R3")) in consumeSpecialIntrinsicKind()
123 if (MangledName.consumeFront("?_R4")) in consumeSpecialIntrinsicKind()
125 if (MangledName.consumeFront("?_S")) in consumeSpecialIntrinsicKind()
127 if (MangledName.consumeFront("?__E")) in consumeSpecialIntrinsicKind()
129 if (MangledName.consumeFront("?__F")) in consumeSpecialIntrinsicKind()
131 if (MangledName.consumeFront("?__J")) in consumeSpecialIntrinsicKind()
212 demangleFunctionRefQualifier(StringView &MangledName) { in demangleFunctionRefQualifier() argument
213 if (MangledName.consumeFront('G')) in demangleFunctionRefQualifier()
215 else if (MangledName.consumeFront('H')) in demangleFunctionRefQualifier()
221 demanglePointerCVQualifiers(StringView &MangledName) { in demanglePointerCVQualifiers() argument
222 if (MangledName.consumeFront("$$Q")) in demanglePointerCVQualifiers()
225 switch (MangledName.popFront()) { in demanglePointerCVQualifiers()
251 Demangler::demangleSpecialTableSymbolNode(StringView &MangledName, in demangleSpecialTableSymbolNode() argument
270 QualifiedNameNode *QN = demangleNameScopeChain(MangledName, NI); in demangleSpecialTableSymbolNode()
274 char Front = MangledName.popFront(); in demangleSpecialTableSymbolNode()
280 std::tie(STSN->Quals, IsMember) = demangleQualifiers(MangledName); in demangleSpecialTableSymbolNode()
281 if (!MangledName.consumeFront('@')) in demangleSpecialTableSymbolNode()
282 STSN->TargetName = demangleFullyQualifiedTypeName(MangledName); in demangleSpecialTableSymbolNode()
287 Demangler::demangleLocalStaticGuard(StringView &MangledName) { in demangleLocalStaticGuard() argument
290 QualifiedNameNode *QN = demangleNameScopeChain(MangledName, LSGI); in demangleLocalStaticGuard()
295 if (MangledName.consumeFront("4IA")) in demangleLocalStaticGuard()
297 else if (MangledName.consumeFront("5")) in demangleLocalStaticGuard()
304 if (!MangledName.empty()) in demangleLocalStaticGuard()
305 LSGI->ScopeIndex = demangleUnsigned(MangledName); in demangleLocalStaticGuard()
342 ArenaAllocator &Arena, StringView &MangledName, StringView VariableName) { in demangleUntypedVariable() argument
344 QualifiedNameNode *QN = demangleNameScopeChain(MangledName, NI); in demangleUntypedVariable()
347 if (MangledName.consumeFront("8")) in demangleUntypedVariable()
356 StringView &MangledName) { in demangleRttiBaseClassDescriptorNode() argument
359 RBCDN->NVOffset = demangleUnsigned(MangledName); in demangleRttiBaseClassDescriptorNode()
360 RBCDN->VBPtrOffset = demangleSigned(MangledName); in demangleRttiBaseClassDescriptorNode()
361 RBCDN->VBTableOffset = demangleUnsigned(MangledName); in demangleRttiBaseClassDescriptorNode()
362 RBCDN->Flags = demangleUnsigned(MangledName); in demangleRttiBaseClassDescriptorNode()
367 VSN->Name = demangleNameScopeChain(MangledName, RBCDN); in demangleRttiBaseClassDescriptorNode()
368 MangledName.consumeFront('8'); in demangleRttiBaseClassDescriptorNode()
372 FunctionSymbolNode *Demangler::demangleInitFiniStub(StringView &MangledName, in demangleInitFiniStub() argument
379 if (MangledName.consumeFront('?')) in demangleInitFiniStub()
382 QualifiedNameNode *QN = demangleFullyQualifiedSymbolName(MangledName); in demangleInitFiniStub()
384 SymbolNode *Symbol = demangleEncodedSymbol(MangledName, QN); in demangleInitFiniStub()
397 if (MangledName.consumeFront('@')) in demangleInitFiniStub()
403 FSN = demangleFunctionEncoding(MangledName); in demangleInitFiniStub()
420 SymbolNode *Demangler::demangleSpecialIntrinsic(StringView &MangledName) { in demangleSpecialIntrinsic() argument
421 SpecialIntrinsicKind SIK = consumeSpecialIntrinsicKind(MangledName); in demangleSpecialIntrinsic()
427 return demangleStringLiteral(MangledName); in demangleSpecialIntrinsic()
432 return demangleSpecialTableSymbolNode(MangledName, SIK); in demangleSpecialIntrinsic()
434 return demangleVcallThunkNode(MangledName); in demangleSpecialIntrinsic()
436 return demangleLocalStaticGuard(MangledName); in demangleSpecialIntrinsic()
438 TypeNode *T = demangleType(MangledName, QualifierMangleMode::Result); in demangleSpecialIntrinsic()
441 if (!MangledName.consumeFront("@8")) in demangleSpecialIntrinsic()
443 if (!MangledName.empty()) in demangleSpecialIntrinsic()
448 return demangleUntypedVariable(Arena, MangledName, in demangleSpecialIntrinsic()
451 return demangleUntypedVariable(Arena, MangledName, in demangleSpecialIntrinsic()
454 return demangleRttiBaseClassDescriptorNode(Arena, MangledName); in demangleSpecialIntrinsic()
456 return demangleInitFiniStub(MangledName, false); in demangleSpecialIntrinsic()
458 return demangleInitFiniStub(MangledName, true); in demangleSpecialIntrinsic()
467 Demangler::demangleFunctionIdentifierCode(StringView &MangledName) { in demangleFunctionIdentifierCode() argument
468 assert(MangledName.startsWith('?')); in demangleFunctionIdentifierCode()
469 MangledName = MangledName.dropFront(); in demangleFunctionIdentifierCode()
471 if (MangledName.consumeFront("__")) in demangleFunctionIdentifierCode()
473 MangledName, FunctionIdentifierCodeGroup::DoubleUnder); in demangleFunctionIdentifierCode()
474 else if (MangledName.consumeFront("_")) in demangleFunctionIdentifierCode()
475 return demangleFunctionIdentifierCode(MangledName, in demangleFunctionIdentifierCode()
477 return demangleFunctionIdentifierCode(MangledName, in demangleFunctionIdentifierCode()
482 Demangler::demangleStructorIdentifier(StringView &MangledName, in demangleStructorIdentifier() argument
490 Demangler::demangleConversionOperatorIdentifier(StringView &MangledName) { in demangleConversionOperatorIdentifier() argument
497 Demangler::demangleLiteralOperatorIdentifier(StringView &MangledName) { in demangleLiteralOperatorIdentifier() argument
500 N->Name = demangleSimpleString(MangledName, false); in demangleLiteralOperatorIdentifier()
639 Demangler::demangleFunctionIdentifierCode(StringView &MangledName, in demangleFunctionIdentifierCode() argument
643 switch (char CH = MangledName.popFront()) { in demangleFunctionIdentifierCode()
646 return demangleStructorIdentifier(MangledName, CH == '1'); in demangleFunctionIdentifierCode()
648 return demangleConversionOperatorIdentifier(MangledName); in demangleFunctionIdentifierCode()
656 translateIntrinsicFunctionCode(MangledName.popFront(), Group)); in demangleFunctionIdentifierCode()
658 switch (char CH = MangledName.popFront()) { in demangleFunctionIdentifierCode()
660 return demangleLiteralOperatorIdentifier(MangledName); in demangleFunctionIdentifierCode()
671 SymbolNode *Demangler::demangleEncodedSymbol(StringView &MangledName, in demangleEncodedSymbol() argument
674 switch (MangledName.front()) { in demangleEncodedSymbol()
680 StorageClass SC = demangleVariableStorageClass(MangledName); in demangleEncodedSymbol()
681 return demangleVariableEncoding(MangledName, SC); in demangleEncodedSymbol()
686 FunctionSymbolNode *FSN = demangleFunctionEncoding(MangledName); in demangleEncodedSymbol()
698 SymbolNode *Demangler::parse(StringView &MangledName) { in parse() argument
701 if (MangledName.startsWith("??@")) { in parse()
705 S->Name = synthesizeQualifiedName(Arena, MangledName); in parse()
709 if (!MangledName.startsWith('?')) { in parse()
714 MangledName.consumeFront('?'); in parse()
718 if (SymbolNode *SI = demangleSpecialIntrinsic(MangledName)) in parse()
723 QualifiedNameNode *QN = demangleFullyQualifiedSymbolName(MangledName); in parse()
727 SymbolNode *Symbol = demangleEncodedSymbol(MangledName, QN); in parse()
738 TagTypeNode *Demangler::parseTagUniqueName(StringView &MangledName) { in parseTagUniqueName() argument
739 if (!MangledName.consumeFront(".?A")) in parseTagUniqueName()
741 MangledName.consumeFront(".?A"); in parseTagUniqueName()
742 if (MangledName.empty()) in parseTagUniqueName()
745 return demangleClassType(MangledName); in parseTagUniqueName()
755 VariableSymbolNode *Demangler::demangleVariableEncoding(StringView &MangledName, in demangleVariableEncoding() argument
759 VSN->Type = demangleType(MangledName, QualifierMangleMode::Drop); in demangleVariableEncoding()
770 demanglePointerExtQualifiers(MangledName)); in demangleVariableEncoding()
773 std::tie(ExtraChildQuals, IsMember) = demangleQualifiers(MangledName); in demangleVariableEncoding()
777 demangleFullyQualifiedTypeName(MangledName); in demangleVariableEncoding()
785 VSN->Type->Quals = demangleQualifiers(MangledName).first; in demangleVariableEncoding()
803 std::pair<uint64_t, bool> Demangler::demangleNumber(StringView &MangledName) { in demangleNumber() argument
804 bool IsNegative = MangledName.consumeFront('?'); in demangleNumber()
806 if (startsWithDigit(MangledName)) { in demangleNumber()
807 uint64_t Ret = MangledName[0] - '0' + 1; in demangleNumber()
808 MangledName = MangledName.dropFront(1); in demangleNumber()
813 for (size_t i = 0; i < MangledName.size(); ++i) { in demangleNumber()
814 char C = MangledName[i]; in demangleNumber()
816 MangledName = MangledName.dropFront(i + 1); in demangleNumber()
830 uint64_t Demangler::demangleUnsigned(StringView &MangledName) { in demangleUnsigned() argument
833 std::tie(Number, IsNegative) = demangleNumber(MangledName); in demangleUnsigned()
839 int64_t Demangler::demangleSigned(StringView &MangledName) { in demangleSigned() argument
842 std::tie(Number, IsNegative) = demangleNumber(MangledName); in demangleSigned()
862 NamedIdentifierNode *Demangler::demangleBackRefName(StringView &MangledName) { in demangleBackRefName() argument
863 assert(startsWithDigit(MangledName)); in demangleBackRefName()
865 size_t I = MangledName[0] - '0'; in demangleBackRefName()
871 MangledName = MangledName.dropFront(); in demangleBackRefName()
892 Demangler::demangleTemplateInstantiationName(StringView &MangledName, in demangleTemplateInstantiationName() argument
894 assert(MangledName.startsWith("?$")); in demangleTemplateInstantiationName()
895 MangledName.consumeFront("?$"); in demangleTemplateInstantiationName()
901 demangleUnqualifiedSymbolName(MangledName, NBB_Simple); in demangleTemplateInstantiationName()
903 Identifier->TemplateParams = demangleTemplateParameterList(MangledName); in demangleTemplateInstantiationName()
915 NamedIdentifierNode *Demangler::demangleSimpleName(StringView &MangledName, in demangleSimpleName() argument
917 StringView S = demangleSimpleString(MangledName, Memorize); in demangleSimpleName()
933 uint8_t Demangler::demangleCharLiteral(StringView &MangledName) { in demangleCharLiteral() argument
934 if (!MangledName.startsWith('?')) in demangleCharLiteral()
935 return MangledName.popFront(); in demangleCharLiteral()
937 MangledName = MangledName.dropFront(); in demangleCharLiteral()
938 if (MangledName.empty()) in demangleCharLiteral()
941 if (MangledName.consumeFront('$')) { in demangleCharLiteral()
943 if (MangledName.size() < 2) in demangleCharLiteral()
945 StringView Nibbles = MangledName.substr(0, 2); in demangleCharLiteral()
951 MangledName = MangledName.dropFront(2); in demangleCharLiteral()
955 if (startsWithDigit(MangledName)) { in demangleCharLiteral()
957 char C = Lookup[MangledName[0] - '0']; in demangleCharLiteral()
958 MangledName = MangledName.dropFront(); in demangleCharLiteral()
962 if (MangledName[0] >= 'a' && MangledName[0] <= 'z') { in demangleCharLiteral()
967 char C = Lookup[MangledName[0] - 'a']; in demangleCharLiteral()
968 MangledName = MangledName.dropFront(); in demangleCharLiteral()
972 if (MangledName[0] >= 'A' && MangledName[0] <= 'Z') { in demangleCharLiteral()
977 char C = Lookup[MangledName[0] - 'A']; in demangleCharLiteral()
978 MangledName = MangledName.dropFront(); in demangleCharLiteral()
987 wchar_t Demangler::demangleWcharLiteral(StringView &MangledName) { in demangleWcharLiteral() argument
990 C1 = demangleCharLiteral(MangledName); in demangleWcharLiteral()
993 C2 = demangleCharLiteral(MangledName); in demangleWcharLiteral()
1150 FunctionSymbolNode *Demangler::demangleVcallThunkNode(StringView &MangledName) { in demangleVcallThunkNode() argument
1156 FSN->Name = demangleNameScopeChain(MangledName, VTIN); in demangleVcallThunkNode()
1158 Error = !MangledName.consumeFront("$B"); in demangleVcallThunkNode()
1160 VTIN->OffsetInVTable = demangleUnsigned(MangledName); in demangleVcallThunkNode()
1162 Error = !MangledName.consumeFront('A'); in demangleVcallThunkNode()
1164 FSN->Signature->CallConvention = demangleCallingConvention(MangledName); in demangleVcallThunkNode()
1169 Demangler::demangleStringLiteral(StringView &MangledName) { in demangleStringLiteral() argument
1182 if (!MangledName.consumeFront("@_")) in demangleStringLiteral()
1184 if (MangledName.empty()) in demangleStringLiteral()
1188 switch (MangledName.popFront()) { in demangleStringLiteral()
1199 std::tie(StringByteSize, IsNegative) = demangleNumber(MangledName); in demangleStringLiteral()
1204 CrcEndPos = MangledName.find('@'); in demangleStringLiteral()
1207 CRC = MangledName.substr(0, CrcEndPos); in demangleStringLiteral()
1208 MangledName = MangledName.dropFront(CrcEndPos + 1); in demangleStringLiteral()
1209 if (MangledName.empty()) in demangleStringLiteral()
1220 while (!MangledName.consumeFront('@')) { in demangleStringLiteral()
1222 wchar_t W = demangleWcharLiteral(MangledName); in demangleStringLiteral()
1236 while (!MangledName.consumeFront('@')) { in demangleStringLiteral()
1238 StringBytes[BytesDecoded++] = demangleCharLiteral(MangledName); in demangleStringLiteral()
1280 StringView Demangler::demangleSimpleString(StringView &MangledName, in demangleSimpleString() argument
1283 for (size_t i = 0; i < MangledName.size(); ++i) { in demangleSimpleString()
1284 if (MangledName[i] != '@') in demangleSimpleString()
1286 S = MangledName.substr(0, i); in demangleSimpleString()
1287 MangledName = MangledName.dropFront(i + 1); in demangleSimpleString()
1299 Demangler::demangleAnonymousNamespaceName(StringView &MangledName) { in demangleAnonymousNamespaceName() argument
1300 assert(MangledName.startsWith("?A")); in demangleAnonymousNamespaceName()
1301 MangledName.consumeFront("?A"); in demangleAnonymousNamespaceName()
1305 size_t EndPos = MangledName.find('@'); in demangleAnonymousNamespaceName()
1310 StringView NamespaceKey = MangledName.substr(0, EndPos); in demangleAnonymousNamespaceName()
1312 MangledName = MangledName.substr(EndPos + 1); in demangleAnonymousNamespaceName()
1317 Demangler::demangleLocallyScopedNamePiece(StringView &MangledName) { in demangleLocallyScopedNamePiece() argument
1318 assert(startsWithLocalScopePattern(MangledName)); in demangleLocallyScopedNamePiece()
1321 MangledName.consumeFront('?'); in demangleLocallyScopedNamePiece()
1322 auto Number = demangleNumber(MangledName); in demangleLocallyScopedNamePiece()
1326 MangledName.consumeFront('?'); in demangleLocallyScopedNamePiece()
1329 Node *Scope = parse(MangledName); in demangleLocallyScopedNamePiece()
1351 Demangler::demangleFullyQualifiedTypeName(StringView &MangledName) { in demangleFullyQualifiedTypeName() argument
1352 IdentifierNode *Identifier = demangleUnqualifiedTypeName(MangledName, true); in demangleFullyQualifiedTypeName()
1357 QualifiedNameNode *QN = demangleNameScopeChain(MangledName, Identifier); in demangleFullyQualifiedTypeName()
1368 Demangler::demangleFullyQualifiedSymbolName(StringView &MangledName) { in demangleFullyQualifiedSymbolName() argument
1375 demangleUnqualifiedSymbolName(MangledName, NBB_Simple); in demangleFullyQualifiedSymbolName()
1379 QualifiedNameNode *QN = demangleNameScopeChain(MangledName, Identifier); in demangleFullyQualifiedSymbolName()
1394 IdentifierNode *Demangler::demangleUnqualifiedTypeName(StringView &MangledName, in demangleUnqualifiedTypeName() argument
1400 if (startsWithDigit(MangledName)) in demangleUnqualifiedTypeName()
1401 return demangleBackRefName(MangledName); in demangleUnqualifiedTypeName()
1403 if (MangledName.startsWith("?$")) in demangleUnqualifiedTypeName()
1404 return demangleTemplateInstantiationName(MangledName, NBB_Template); in demangleUnqualifiedTypeName()
1406 return demangleSimpleName(MangledName, Memorize); in demangleUnqualifiedTypeName()
1410 Demangler::demangleUnqualifiedSymbolName(StringView &MangledName, in demangleUnqualifiedSymbolName() argument
1412 if (startsWithDigit(MangledName)) in demangleUnqualifiedSymbolName()
1413 return demangleBackRefName(MangledName); in demangleUnqualifiedSymbolName()
1414 if (MangledName.startsWith("?$")) in demangleUnqualifiedSymbolName()
1415 return demangleTemplateInstantiationName(MangledName, NBB); in demangleUnqualifiedSymbolName()
1416 if (MangledName.startsWith('?')) in demangleUnqualifiedSymbolName()
1417 return demangleFunctionIdentifierCode(MangledName); in demangleUnqualifiedSymbolName()
1418 return demangleSimpleName(MangledName, (NBB & NBB_Simple) != 0); in demangleUnqualifiedSymbolName()
1421 IdentifierNode *Demangler::demangleNameScopePiece(StringView &MangledName) { in demangleNameScopePiece() argument
1422 if (startsWithDigit(MangledName)) in demangleNameScopePiece()
1423 return demangleBackRefName(MangledName); in demangleNameScopePiece()
1425 if (MangledName.startsWith("?$")) in demangleNameScopePiece()
1426 return demangleTemplateInstantiationName(MangledName, NBB_Template); in demangleNameScopePiece()
1428 if (MangledName.startsWith("?A")) in demangleNameScopePiece()
1429 return demangleAnonymousNamespaceName(MangledName); in demangleNameScopePiece()
1431 if (startsWithLocalScopePattern(MangledName)) in demangleNameScopePiece()
1432 return demangleLocallyScopedNamePiece(MangledName); in demangleNameScopePiece()
1434 return demangleSimpleName(MangledName, true); in demangleNameScopePiece()
1450 Demangler::demangleNameScopeChain(StringView &MangledName, in demangleNameScopeChain() argument
1457 while (!MangledName.consumeFront("@")) { in demangleNameScopeChain()
1463 if (MangledName.empty()) { in demangleNameScopeChain()
1469 IdentifierNode *Elem = demangleNameScopePiece(MangledName); in demangleNameScopeChain()
1481 FuncClass Demangler::demangleFunctionClass(StringView &MangledName) { in demangleFunctionClass() argument
1482 switch (MangledName.popFront()) { in demangleFunctionClass()
1539 if (MangledName.consumeFront('R')) in demangleFunctionClass()
1542 switch (MangledName.popFront()) { in demangleFunctionClass()
1563 CallingConv Demangler::demangleCallingConvention(StringView &MangledName) { in demangleCallingConvention() argument
1564 switch (MangledName.popFront()) { in demangleCallingConvention()
1593 StorageClass Demangler::demangleVariableStorageClass(StringView &MangledName) { in demangleVariableStorageClass() argument
1594 assert(std::isdigit(MangledName.front())); in demangleVariableStorageClass()
1596 switch (MangledName.popFront()) { in demangleVariableStorageClass()
1613 Demangler::demangleQualifiers(StringView &MangledName) { in demangleQualifiers() argument
1615 switch (MangledName.popFront()) { in demangleQualifiers()
1641 TypeNode *Demangler::demangleType(StringView &MangledName, in demangleType() argument
1646 std::tie(Quals, IsMember) = demangleQualifiers(MangledName); in demangleType()
1648 if (MangledName.consumeFront('?')) in demangleType()
1649 std::tie(Quals, IsMember) = demangleQualifiers(MangledName); in demangleType()
1653 if (isTagType(MangledName)) in demangleType()
1654 Ty = demangleClassType(MangledName); in demangleType()
1655 else if (isPointerType(MangledName)) { in demangleType()
1656 if (isMemberPointer(MangledName, Error)) in demangleType()
1657 Ty = demangleMemberPointerType(MangledName); in demangleType()
1659 Ty = demanglePointerType(MangledName); in demangleType()
1662 } else if (isArrayType(MangledName)) in demangleType()
1663 Ty = demangleArrayType(MangledName); in demangleType()
1664 else if (isFunctionType(MangledName)) { in demangleType()
1665 if (MangledName.consumeFront("$$A8@@")) in demangleType()
1666 Ty = demangleFunctionType(MangledName, true); in demangleType()
1668 assert(MangledName.startsWith("$$A6")); in demangleType()
1669 MangledName.consumeFront("$$A6"); in demangleType()
1670 Ty = demangleFunctionType(MangledName, false); in demangleType()
1672 } else if (isCustomType(MangledName)) { in demangleType()
1673 Ty = demangleCustomType(MangledName); in demangleType()
1675 Ty = demanglePrimitiveType(MangledName); in demangleType()
1684 bool Demangler::demangleThrowSpecification(StringView &MangledName) { in demangleThrowSpecification() argument
1685 if (MangledName.consumeFront("_E")) in demangleThrowSpecification()
1687 if (MangledName.consumeFront('Z')) in demangleThrowSpecification()
1694 FunctionSignatureNode *Demangler::demangleFunctionType(StringView &MangledName, in demangleFunctionType() argument
1699 FTy->Quals = demanglePointerExtQualifiers(MangledName); in demangleFunctionType()
1700 FTy->RefQualifier = demangleFunctionRefQualifier(MangledName); in demangleFunctionType()
1701 FTy->Quals = Qualifiers(FTy->Quals | demangleQualifiers(MangledName).first); in demangleFunctionType()
1705 FTy->CallConvention = demangleCallingConvention(MangledName); in demangleFunctionType()
1709 bool IsStructor = MangledName.consumeFront('@'); in demangleFunctionType()
1711 FTy->ReturnType = demangleType(MangledName, QualifierMangleMode::Result); in demangleFunctionType()
1713 FTy->Params = demangleFunctionParameterList(MangledName); in demangleFunctionType()
1715 FTy->IsNoexcept = demangleThrowSpecification(MangledName); in demangleFunctionType()
1721 Demangler::demangleFunctionEncoding(StringView &MangledName) { in demangleFunctionEncoding() argument
1723 if (MangledName.consumeFront("$$J0")) in demangleFunctionEncoding()
1726 FuncClass FC = demangleFunctionClass(MangledName); in demangleFunctionEncoding()
1733 TTN->ThisAdjust.StaticOffset = demangleSigned(MangledName); in demangleFunctionEncoding()
1737 TTN->ThisAdjust.VBPtrOffset = demangleSigned(MangledName); in demangleFunctionEncoding()
1738 TTN->ThisAdjust.VBOffsetOffset = demangleSigned(MangledName); in demangleFunctionEncoding()
1740 TTN->ThisAdjust.VtordispOffset = demangleSigned(MangledName); in demangleFunctionEncoding()
1741 TTN->ThisAdjust.StaticOffset = demangleSigned(MangledName); in demangleFunctionEncoding()
1751 FSN = demangleFunctionType(MangledName, HasThisQuals); in demangleFunctionEncoding()
1764 CustomTypeNode *Demangler::demangleCustomType(StringView &MangledName) { in demangleCustomType() argument
1765 assert(MangledName.startsWith('?')); in demangleCustomType()
1766 MangledName.popFront(); in demangleCustomType()
1769 CTN->Identifier = demangleUnqualifiedTypeName(MangledName, true); in demangleCustomType()
1770 if (!MangledName.consumeFront('@')) in demangleCustomType()
1778 PrimitiveTypeNode *Demangler::demanglePrimitiveType(StringView &MangledName) { in demanglePrimitiveType() argument
1779 if (MangledName.consumeFront("$$T")) in demanglePrimitiveType()
1782 switch (MangledName.popFront()) { in demanglePrimitiveType()
1810 if (MangledName.empty()) { in demanglePrimitiveType()
1814 switch (MangledName.popFront()) { in demanglePrimitiveType()
1835 TagTypeNode *Demangler::demangleClassType(StringView &MangledName) { in demangleClassType() argument
1838 switch (MangledName.popFront()) { in demangleClassType()
1849 if (MangledName.popFront() != '4') { in demangleClassType()
1859 TT->QualifiedName = demangleFullyQualifiedTypeName(MangledName); in demangleClassType()
1865 PointerTypeNode *Demangler::demanglePointerType(StringView &MangledName) { in demanglePointerType() argument
1869 demanglePointerCVQualifiers(MangledName); in demanglePointerType()
1871 if (MangledName.consumeFront("6")) { in demanglePointerType()
1872 Pointer->Pointee = demangleFunctionType(MangledName, false); in demanglePointerType()
1876 Qualifiers ExtQuals = demanglePointerExtQualifiers(MangledName); in demanglePointerType()
1879 Pointer->Pointee = demangleType(MangledName, QualifierMangleMode::Mangle); in demanglePointerType()
1883 PointerTypeNode *Demangler::demangleMemberPointerType(StringView &MangledName) { in demangleMemberPointerType() argument
1887 demanglePointerCVQualifiers(MangledName); in demangleMemberPointerType()
1890 Qualifiers ExtQuals = demanglePointerExtQualifiers(MangledName); in demangleMemberPointerType()
1893 if (MangledName.consumeFront("8")) { in demangleMemberPointerType()
1894 Pointer->ClassParent = demangleFullyQualifiedTypeName(MangledName); in demangleMemberPointerType()
1895 Pointer->Pointee = demangleFunctionType(MangledName, true); in demangleMemberPointerType()
1899 std::tie(PointeeQuals, IsMember) = demangleQualifiers(MangledName); in demangleMemberPointerType()
1901 Pointer->ClassParent = demangleFullyQualifiedTypeName(MangledName); in demangleMemberPointerType()
1903 Pointer->Pointee = demangleType(MangledName, QualifierMangleMode::Drop); in demangleMemberPointerType()
1910 Qualifiers Demangler::demanglePointerExtQualifiers(StringView &MangledName) { in demanglePointerExtQualifiers() argument
1912 if (MangledName.consumeFront('E')) in demanglePointerExtQualifiers()
1914 if (MangledName.consumeFront('I')) in demanglePointerExtQualifiers()
1916 if (MangledName.consumeFront('F')) in demanglePointerExtQualifiers()
1922 ArrayTypeNode *Demangler::demangleArrayType(StringView &MangledName) { in demangleArrayType() argument
1923 assert(MangledName.front() == 'Y'); in demangleArrayType()
1924 MangledName.popFront(); in demangleArrayType()
1928 std::tie(Rank, IsNegative) = demangleNumber(MangledName); in demangleArrayType()
1940 std::tie(D, IsNegative) = demangleNumber(MangledName); in demangleArrayType()
1953 if (MangledName.consumeFront("$$C")) { in demangleArrayType()
1955 std::tie(ATy->Quals, IsMember) = demangleQualifiers(MangledName); in demangleArrayType()
1962 ATy->ElementType = demangleType(MangledName, QualifierMangleMode::Drop); in demangleArrayType()
1968 Demangler::demangleFunctionParameterList(StringView &MangledName) { in demangleFunctionParameterList() argument
1970 if (MangledName.consumeFront('X')) in demangleFunctionParameterList()
1976 while (!Error && !MangledName.startsWith('@') && in demangleFunctionParameterList()
1977 !MangledName.startsWith('Z')) { in demangleFunctionParameterList()
1980 if (startsWithDigit(MangledName)) { in demangleFunctionParameterList()
1981 size_t N = MangledName[0] - '0'; in demangleFunctionParameterList()
1986 MangledName = MangledName.dropFront(); in demangleFunctionParameterList()
1994 size_t OldSize = MangledName.size(); in demangleFunctionParameterList()
1997 TypeNode *TN = demangleType(MangledName, QualifierMangleMode::Drop); in demangleFunctionParameterList()
2003 size_t CharsConsumed = OldSize - MangledName.size(); in demangleFunctionParameterList()
2021 if (MangledName.consumeFront('@')) in demangleFunctionParameterList()
2024 if (MangledName.consumeFront('Z')) { in demangleFunctionParameterList()
2035 Demangler::demangleTemplateParameterList(StringView &MangledName) { in demangleTemplateParameterList() argument
2040 while (!Error && !MangledName.startsWith('@')) { in demangleTemplateParameterList()
2041 if (MangledName.consumeFront("$S") || MangledName.consumeFront("$$V") || in demangleTemplateParameterList()
2042 MangledName.consumeFront("$$$V") || MangledName.consumeFront("$$Z")) { in demangleTemplateParameterList()
2055 if (MangledName.consumeFront("$$Y")) { in demangleTemplateParameterList()
2057 TP.N = demangleFullyQualifiedTypeName(MangledName); in demangleTemplateParameterList()
2058 } else if (MangledName.consumeFront("$$B")) { in demangleTemplateParameterList()
2060 TP.N = demangleType(MangledName, QualifierMangleMode::Drop); in demangleTemplateParameterList()
2061 } else if (MangledName.consumeFront("$$C")) { in demangleTemplateParameterList()
2063 TP.N = demangleType(MangledName, QualifierMangleMode::Mangle); in demangleTemplateParameterList()
2064 } else if (MangledName.startsWith("$1") || MangledName.startsWith("$H") || in demangleTemplateParameterList()
2065 MangledName.startsWith("$I") || MangledName.startsWith("$J")) { in demangleTemplateParameterList()
2070 MangledName = MangledName.dropFront(); in demangleTemplateParameterList()
2075 char InheritanceSpecifier = MangledName.popFront(); in demangleTemplateParameterList()
2077 if (MangledName.startsWith('?')) { in demangleTemplateParameterList()
2078 S = parse(MangledName); in demangleTemplateParameterList()
2085 demangleSigned(MangledName); in demangleTemplateParameterList()
2089 demangleSigned(MangledName); in demangleTemplateParameterList()
2093 demangleSigned(MangledName); in demangleTemplateParameterList()
2103 } else if (MangledName.startsWith("$E?")) { in demangleTemplateParameterList()
2104 MangledName.consumeFront("$E"); in demangleTemplateParameterList()
2107 TPRN->Symbol = parse(MangledName); in demangleTemplateParameterList()
2109 } else if (MangledName.startsWith("$F") || MangledName.startsWith("$G")) { in demangleTemplateParameterList()
2113 MangledName = MangledName.dropFront(); in demangleTemplateParameterList()
2114 char InheritanceSpecifier = MangledName.popFront(); in demangleTemplateParameterList()
2119 demangleSigned(MangledName); in demangleTemplateParameterList()
2123 demangleSigned(MangledName); in demangleTemplateParameterList()
2125 demangleSigned(MangledName); in demangleTemplateParameterList()
2135 } else if (MangledName.consumeFront("$0")) { in demangleTemplateParameterList()
2139 std::tie(Value, IsNegative) = demangleNumber(MangledName); in demangleTemplateParameterList()
2143 TP.N = demangleType(MangledName, QualifierMangleMode::Drop); in demangleTemplateParameterList()
2156 if (MangledName.consumeFront('@')) in demangleTemplateParameterList()
2192 char *llvm::microsoftDemangle(const char *MangledName, char *Buf, size_t *N, in microsoftDemangle() argument
2198 StringView Name{MangledName}; in microsoftDemangle()