Skip to content

Commit 1005752

Browse files
committed
Delete lifetime dependence mangling
Mangling this information for future directions like component lifetimes becomes complex and the current mangling scheme isn't scalable anyway. Deleting this support for now.
1 parent 2fd182a commit 1005752

19 files changed

+43
-143
lines changed

docs/ABI/Mangling.rst

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -752,10 +752,6 @@ Types
752752
differentiable ::= 'Yjr' // @differentiable(reverse) on function type
753753
differentiable ::= 'Yjd' // @differentiable on function type
754754
differentiable ::= 'Yjl' // @differentiable(_linear) on function type
755-
#if SWIFT_RUNTIME_VERSION >= 5.TBD
756-
lifetime-dependence ::= 'Yli' INDEX-SUBSET '_' // inherit lifetime dependence
757-
lifetime-dependence ::= 'Yls' INDEX-SUBSET '_' // scoped lifetime dependence
758-
#endif
759755
type-list ::= list-type '_' list-type* // list of types
760756
type-list ::= empty-list
761757

include/swift/AST/ASTMangler.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,6 @@ class ASTMangler : public Mangler {
9191
/// a critical role.
9292
bool AllowTypedThrows = true;
9393

94-
/// If enabled, lifetime dependencies can be encoded in the mangled name.
95-
bool AllowLifetimeDependencies = true;
96-
9794
/// If enabled, declarations annotated with @_originallyDefinedIn are mangled
9895
/// as if they're part of their original module. Disabled for debug mangling,
9996
/// because lldb wants to find declarations in the modules they're currently

include/swift/Demangling/Demangle.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,6 @@ enum class MangledDifferentiabilityKind : char {
136136
Linear = 'l',
137137
};
138138

139-
enum class MangledLifetimeDependenceKind : char { Inherit = 'i', Scope = 's' };
140-
141139
/// The pass that caused the specialization to occur. We use this to make sure
142140
/// that two passes that generate similar changes do not yield the same
143141
/// mangling. This currently cannot happen, so this is just a safety measure

include/swift/Demangling/DemangleNodes.def

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,6 @@ NODE(AsyncRemoved)
389389

390390
// Added in Swift 5.TBD
391391
NODE(ObjectiveCProtocolSymbolicReference)
392-
NODE(LifetimeDependence)
393392

394393
NODE(OutlinedInitializeWithCopyNoValueWitness)
395394
NODE(OutlinedAssignWithTakeNoValueWitness)

include/swift/Demangling/Demangler.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -637,8 +637,6 @@ class Demangler : public NodeFactory {
637637
bool demangleBoundGenerics(Vector<NodePointer> &TypeListList,
638638
NodePointer &RetroactiveConformances);
639639

640-
NodePointer demangleLifetimeDependence();
641-
642640
NodePointer demangleIntegerType();
643641

644642
void dump();

lib/AST/ASTMangler.cpp

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3264,10 +3264,6 @@ void ASTMangler::appendFunctionResultType(
32643264
} else {
32653265
appendType(resultType, sig, forDecl);
32663266
}
3267-
3268-
if (AllowLifetimeDependencies && lifetimeDependence.has_value()) {
3269-
appendLifetimeDependence(*lifetimeDependence);
3270-
}
32713267
}
32723268

32733269
void ASTMangler::appendTypeList(Type listTy, GenericSignature sig,
@@ -3320,31 +3316,12 @@ void ASTMangler::appendParameterTypeListElement(
33203316
if (flags.isCompileTimeConst())
33213317
appendOperator("Yt");
33223318

3323-
if (AllowLifetimeDependencies && lifetimeDependence) {
3324-
appendLifetimeDependence(*lifetimeDependence);
3325-
}
3326-
33273319
if (!name.empty())
33283320
appendIdentifier(name.str());
33293321
if (flags.isVariadic())
33303322
appendOperator("d");
33313323
}
33323324

3333-
void ASTMangler::appendLifetimeDependence(LifetimeDependenceInfo info) {
3334-
if (auto *inheritIndices = info.getInheritIndices()) {
3335-
assert(!inheritIndices->isEmpty());
3336-
appendOperator("Yli");
3337-
appendIndexSubset(inheritIndices);
3338-
appendOperator("_");
3339-
}
3340-
if (auto *scopeIndices = info.getScopeIndices()) {
3341-
assert(!scopeIndices->isEmpty());
3342-
appendOperator("Yls");
3343-
appendIndexSubset(scopeIndices);
3344-
appendOperator("_");
3345-
}
3346-
}
3347-
33483325
void ASTMangler::appendTupleTypeListElement(Identifier name, Type elementType,
33493326
GenericSignature sig,
33503327
const ValueDecl *forDecl) {

lib/Demangling/Demangler.cpp

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -990,11 +990,6 @@ NodePointer Demangler::demangleTypeAnnotation() {
990990
case 'u':
991991
return createType(
992992
createWithChild(Node::Kind::Sending, popTypeAndGetChild()));
993-
case 'l': {
994-
auto *node = demangleLifetimeDependence();
995-
addChild(node, popTypeAndGetChild());
996-
return createType(node);
997-
}
998993
default:
999994
return nullptr;
1000995
}
@@ -3158,31 +3153,6 @@ NodePointer Demangler::demangleDifferentiableFunctionType() {
31583153
Node::Kind::DifferentiableFunctionType, (Node::IndexType)kind);
31593154
}
31603155

3161-
static std::optional<MangledLifetimeDependenceKind>
3162-
getMangledLifetimeDependenceKind(char nextChar) {
3163-
switch (nextChar) {
3164-
case 's':
3165-
return MangledLifetimeDependenceKind::Scope;
3166-
case 'i':
3167-
return MangledLifetimeDependenceKind::Inherit;
3168-
}
3169-
return std::nullopt;
3170-
}
3171-
3172-
NodePointer Demangler::demangleLifetimeDependence() {
3173-
auto kind = getMangledLifetimeDependenceKind(nextChar());
3174-
if (!kind.has_value()) {
3175-
return nullptr;
3176-
}
3177-
auto result = createNode(Node::Kind::LifetimeDependence);
3178-
result =
3179-
addChild(result, createNode(Node::Kind::Index, (Node::IndexType)*kind));
3180-
result = addChild(result, demangleIndexSubset());
3181-
if (!nextIf('_'))
3182-
return nullptr;
3183-
return result;
3184-
}
3185-
31863156
std::string Demangler::demangleBridgedMethodParams() {
31873157
if (nextIf('_'))
31883158
return std::string();

lib/Demangling/NodePrinter.cpp

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -648,7 +648,6 @@ class NodePrinter {
648648
case Node::Kind::SymbolicExtendedExistentialType:
649649
case Node::Kind::HasSymbolQuery:
650650
case Node::Kind::ObjectiveCProtocolSymbolicReference:
651-
case Node::Kind::LifetimeDependence:
652651
case Node::Kind::DependentGenericInverseConformanceRequirement:
653652
case Node::Kind::DependentGenericParamValueMarker:
654653
return false;
@@ -1814,21 +1813,6 @@ NodePointer NodePrinter::print(NodePointer Node, unsigned depth,
18141813
Printer << "@noDerivative ";
18151814
print(Node->getChild(0), depth + 1);
18161815
return nullptr;
1817-
case Node::Kind::LifetimeDependence: {
1818-
auto kind = (MangledLifetimeDependenceKind)Node->getChild(0)->getIndex();
1819-
switch (kind) {
1820-
case MangledLifetimeDependenceKind::Inherit:
1821-
Printer << "inherit lifetime dependence: ";
1822-
break;
1823-
case MangledLifetimeDependenceKind::Scope:
1824-
Printer << "scope lifetime dependence: ";
1825-
break;
1826-
}
1827-
print(Node->getChild(1), depth + 1);
1828-
Printer << " ";
1829-
print(Node->getChild(2), depth + 1);
1830-
return nullptr;
1831-
}
18321816
case Node::Kind::NonObjCAttribute:
18331817
Printer << "@nonobjc ";
18341818
return nullptr;

lib/Demangling/OldRemangler.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1943,10 +1943,6 @@ ManglingError Remangler::mangleNoDerivative(Node *node, unsigned depth) {
19431943
return mangleSingleChildNode(node, depth + 1); // type
19441944
}
19451945

1946-
ManglingError Remangler::mangleLifetimeDependence(Node *node, unsigned depth) {
1947-
return MANGLING_ERROR(ManglingError::UnsupportedNodeKind, node);
1948-
}
1949-
19501946
ManglingError Remangler::mangleTuple(Node *node, unsigned depth) {
19511947
size_t NumElems = node->getNumChildren();
19521948
if (NumElems > 0 &&

lib/Demangling/Remangler.cpp

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2250,16 +2250,6 @@ ManglingError Remangler::mangleNoDerivative(Node *node, unsigned depth) {
22502250
return ManglingError::Success;
22512251
}
22522252

2253-
ManglingError Remangler::mangleLifetimeDependence(Node *node, unsigned depth) {
2254-
RETURN_IF_ERROR(mangleChildNode(node, 2, depth + 1));
2255-
Buffer
2256-
<< "Yl"
2257-
<< (char)node->getChild(0)->getIndex(); // mangle lifetime dependence kind
2258-
RETURN_IF_ERROR(mangleChildNode(node, 1, depth + 1)); // mangle index subset
2259-
Buffer << "_";
2260-
return ManglingError::Success;
2261-
}
2262-
22632253
ManglingError Remangler::mangleInfixOperator(Node *node, unsigned depth) {
22642254
mangleIdentifierImpl(node, /*isOperator*/ true);
22652255
Buffer << "oi";

0 commit comments

Comments
 (0)