Skip to content

Commit 708b2ac

Browse files
committed
Remangler: remove support for mangling function specializations in the old remangler
The old remangler is only used for ObjC runtime type mangling, but not for mangling optimized function names.
1 parent 64d5f4c commit 708b2ac

File tree

1 file changed

+10
-118
lines changed

1 file changed

+10
-118
lines changed

lib/Demangling/OldRemangler.cpp

Lines changed: 10 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,6 @@ namespace {
306306
bool trySubstitution(Node *node, SubstitutionEntry &entry);
307307
bool mangleStandardSubstitution(Node *node);
308308
void addSubstitution(const SubstitutionEntry &entry);
309-
void resetSubstitutions();
310309

311310
void mangleDependentGenericParamIndex(Node *node);
312311
void mangleConstrainedType(Node *node);
@@ -389,13 +388,6 @@ static NodePointer applyParamLabels(NodePointer LabelList, NodePointer OrigType,
389388
return Type;
390389
}
391390

392-
/// Reset the currently-active set of substitutions. This is useful
393-
/// when part of the mangling is done independently, e.g. when an
394-
/// optimization pass modifies a pass.
395-
void Remangler::resetSubstitutions() {
396-
Substitutions.clear();
397-
}
398-
399391
bool Remangler::trySubstitution(Node *node, SubstitutionEntry &entry) {
400392
if (mangleStandardSubstitution(node))
401393
return true;
@@ -520,147 +512,47 @@ void Remangler::mangleSuffix(Node *node) {
520512
}
521513

522514
void Remangler::mangleGenericSpecialization(Node *node) {
523-
Out << "TSg";
524-
mangleChildNodes(node); // GenericSpecializationParams
525-
526-
// Specializations are just prepended to already-mangled names.
527-
resetSubstitutions();
528-
529-
// Start another mangled name.
530-
Out << "__T";
515+
unreachable("unsupported");
531516
}
532517

533518
void Remangler::mangleGenericSpecializationNotReAbstracted(Node *node) {
534-
Out << "TSr";
535-
mangleChildNodes(node); // GenericSpecializationParams
536-
537-
// Specializations are just prepended to already-mangled names.
538-
resetSubstitutions();
539-
540-
// Start another mangled name.
541-
Out << "__T";
519+
unreachable("unsupported");
542520
}
543521

544522
void Remangler::mangleInlinedGenericFunction(Node *node) {
545-
Out << "TSi";
546-
mangleChildNodes(node); // GenericSpecializationParams
547-
548-
// Specializations are just prepended to already-mangled names.
549-
resetSubstitutions();
550-
551-
// Start another mangled name.
552-
Out << "__T";
523+
unreachable("unsupported");
553524
}
554525

555526
void Remangler::mangleGenericPartialSpecialization(Node *node) {
556-
unreachable("todo");
527+
unreachable("unsupported");
557528
}
558529

559530
void Remangler::mangleGenericPartialSpecializationNotReAbstracted(Node *node) {
560-
unreachable("todo");
531+
unreachable("unsupported");
561532
}
562533

563534
void Remangler::mangleGenericSpecializationParam(Node *node) {
564-
// Should be a type followed by a series of protocol conformances.
565-
mangleChildNodes(node);
566-
Out << '_';
535+
unreachable("unsupported");
567536
}
568537

569538
void Remangler::mangleFunctionSignatureSpecialization(Node *node) {
570-
Out << "TSf";
571-
mangleChildNodes(node); // FunctionSignatureSpecializationParams
572-
573-
// Specializations are just prepended to already-mangled names.
574-
resetSubstitutions();
575-
576-
// Start another mangled name.
577-
Out << "__T";
539+
unreachable("unsupported");
578540
}
579541

580542
void Remangler::mangleSpecializationPassID(Node *node) {
581-
Out << node->getIndex();
543+
unreachable("unsupported");
582544
}
583545

584546
void Remangler::mangleIsSerialized(Node *node) {
585547
Out << "q";
586548
}
587549

588550
void Remangler::mangleFunctionSignatureSpecializationReturn(Node *node) {
589-
mangleFunctionSignatureSpecializationParam(node);
551+
unreachable("unsupported");
590552
}
591553

592554
void Remangler::mangleFunctionSignatureSpecializationParam(Node *node) {
593-
if (!node->hasChildren()) {
594-
Out << "n_";
595-
return;
596-
}
597-
598-
// The first child is always a kind that specifies the type of param that we
599-
// have.
600-
NodePointer firstChild = node->getChild(0);
601-
unsigned kindValue = firstChild->getIndex();
602-
auto kind = FunctionSigSpecializationParamKind(kindValue);
603-
604-
switch (kind) {
605-
case FunctionSigSpecializationParamKind::ConstantPropFunction:
606-
Out << "cpfr";
607-
mangleIdentifier(node->getChild(1));
608-
Out << '_';
609-
return;
610-
case FunctionSigSpecializationParamKind::ConstantPropGlobal:
611-
Out << "cpg";
612-
mangleIdentifier(node->getChild(1));
613-
Out << '_';
614-
return;
615-
case FunctionSigSpecializationParamKind::ConstantPropInteger:
616-
Out << "cpi" << node->getChild(1)->getText() << '_';
617-
return;
618-
case FunctionSigSpecializationParamKind::ConstantPropFloat:
619-
Out << "cpfl" << node->getChild(1)->getText() << '_';
620-
return;
621-
case FunctionSigSpecializationParamKind::ConstantPropString: {
622-
Out << "cpse";
623-
StringRef encodingStr = node->getChild(1)->getText();
624-
if (encodingStr == "u8")
625-
Out << '0';
626-
else if (encodingStr == "u16")
627-
Out << '1';
628-
else
629-
unreachable("Unknown encoding");
630-
Out << 'v';
631-
mangleIdentifier(node->getChild(2));
632-
Out << '_';
633-
return;
634-
}
635-
case FunctionSigSpecializationParamKind::ClosureProp:
636-
Out << "cl";
637-
mangleIdentifier(node->getChild(1));
638-
for (unsigned i = 2, e = node->getNumChildren(); i != e; ++i) {
639-
mangleType(node->getChild(i));
640-
}
641-
Out << '_';
642-
return;
643-
case FunctionSigSpecializationParamKind::BoxToValue:
644-
Out << "i_";
645-
return;
646-
case FunctionSigSpecializationParamKind::BoxToStack:
647-
Out << "k_";
648-
return;
649-
default:
650-
if (kindValue &
651-
unsigned(FunctionSigSpecializationParamKind::Dead))
652-
Out << 'd';
653-
if (kindValue &
654-
unsigned(FunctionSigSpecializationParamKind::OwnedToGuaranteed))
655-
Out << 'g';
656-
if (kindValue &
657-
unsigned(FunctionSigSpecializationParamKind::GuaranteedToOwned))
658-
Out << 'o';
659-
if (kindValue & unsigned(FunctionSigSpecializationParamKind::SROA))
660-
Out << 's';
661-
Out << '_';
662-
return;
663-
}
555+
unreachable("unsupported");
664556
}
665557

666558
void Remangler::mangleFunctionSignatureSpecializationParamPayload(Node *node) {

0 commit comments

Comments
 (0)