Skip to content

Commit 4bed0e4

Browse files
authored
Merge pull request swiftlang#39632 from eeckstein/remove-private-external-linkage
SIL: remove the private_external SILLinkage
2 parents 5c92cca + 30a74f6 commit 4bed0e4

23 files changed

+42
-51
lines changed

include/swift/SIL/SILLinkage.h

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,6 @@ enum class SILLinkage : uint8_t {
8585
/// shared.
8686
SharedExternal,
8787

88-
/// The same as SharedExternal, except that the definition is private in the
89-
/// other module. This can only occur if an inlined fragile function from
90-
/// another module references a private definition in the other module.
91-
PrivateExternal,
92-
9388
/// The default linkage for a definition.
9489
DefaultForDefinition = Public,
9590

@@ -138,8 +133,6 @@ inline SILLinkage stripExternalFromLinkage(SILLinkage linkage) {
138133
return SILLinkage::Hidden;
139134
if (linkage == SILLinkage::SharedExternal)
140135
return SILLinkage::Shared;
141-
if (linkage == SILLinkage::PrivateExternal)
142-
return SILLinkage::Private;
143136
return linkage;
144137
}
145138

@@ -158,10 +151,8 @@ inline SILLinkage addExternalToLinkage(SILLinkage linkage) {
158151
case SILLinkage::Hidden:
159152
return SILLinkage::HiddenExternal;
160153
case SILLinkage::Private:
161-
return SILLinkage::PrivateExternal;
162154
case SILLinkage::PublicExternal:
163155
case SILLinkage::SharedExternal:
164-
case SILLinkage::PrivateExternal:
165156
case SILLinkage::HiddenExternal:
166157
return linkage;
167158
}
@@ -197,7 +188,6 @@ inline bool hasPublicVisibility(SILLinkage linkage) {
197188
case SILLinkage::Shared:
198189
case SILLinkage::SharedExternal:
199190
case SILLinkage::Private:
200-
case SILLinkage::PrivateExternal:
201191
case SILLinkage::HiddenExternal:
202192
return false;
203193
}
@@ -216,7 +206,6 @@ inline bool hasSharedVisibility(SILLinkage linkage) {
216206
case SILLinkage::Hidden:
217207
case SILLinkage::HiddenExternal:
218208
case SILLinkage::Private:
219-
case SILLinkage::PrivateExternal:
220209
return false;
221210
}
222211

@@ -226,7 +215,6 @@ inline bool hasSharedVisibility(SILLinkage linkage) {
226215
inline bool hasPrivateVisibility(SILLinkage linkage) {
227216
switch (linkage) {
228217
case SILLinkage::Private:
229-
case SILLinkage::PrivateExternal:
230218
return true;
231219
case SILLinkage::Public:
232220
case SILLinkage::PublicExternal:
@@ -247,8 +235,7 @@ inline SILLinkage effectiveLinkageForClassMember(SILLinkage linkage,
247235
case SubclassScope::External:
248236
if (linkage == SILLinkage::Private || linkage == SILLinkage::Hidden)
249237
return SILLinkage::Public;
250-
if (linkage == SILLinkage::PrivateExternal ||
251-
linkage == SILLinkage::HiddenExternal)
238+
if (linkage == SILLinkage::HiddenExternal)
252239
return SILLinkage::PublicExternal;
253240
break;
254241

include/swift/SIL/SILWitnessTable.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ class SILWitnessTable : public llvm::ilist_node<SILWitnessTable>,
4848
/// The method required.
4949
SILDeclRef Requirement;
5050
/// The witness for the method.
51-
/// This can be null in case dead function elimination has removed the method.
51+
/// This can be null in case dead function elimination has removed the method
52+
/// or if the method was not serialized (for de-serialized witness tables).
5253
SILFunction *Witness;
5354
};
5455

lib/IRGen/GenDecl.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2074,7 +2074,6 @@ getIRLinkage(const UniversalLinkageInfo &info, SILLinkage linkage,
20742074
}
20752075

20762076
case SILLinkage::HiddenExternal:
2077-
case SILLinkage::PrivateExternal:
20782077
if (isDefinition)
20792078
return RESULT(AvailableExternally, Hidden, Default);
20802079

lib/IRGen/GenMeta.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2023,7 +2023,6 @@ namespace {
20232023
case SILLinkage::Hidden:
20242024
case SILLinkage::HiddenExternal:
20252025
case SILLinkage::Private:
2026-
case SILLinkage::PrivateExternal:
20272026
return true;
20282027

20292028
case SILLinkage::Shared:

lib/IRGen/Linking.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -609,7 +609,8 @@ SILLinkage LinkEntity::getLinkage(ForDefinition_t forDefinition) const {
609609
auto *nominal = getType().getAnyNominal();
610610
if (getDeclLinkage(nominal) == FormalLinkage::PublicNonUnique)
611611
return SILLinkage::Shared;
612-
return forDefinition ? SILLinkage::Private : SILLinkage::PrivateExternal;
612+
assert(forDefinition);
613+
return SILLinkage::Private;
613614
}
614615

615616
case Kind::TypeMetadataAccessFunction:

lib/SIL/IR/SIL.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ swift::getLinkageForProtocolConformance(const RootProtocolConformance *C,
8686
switch (access) {
8787
case AccessLevel::Private:
8888
case AccessLevel::FilePrivate:
89-
return (definition ? SILLinkage::Private : SILLinkage::PrivateExternal);
89+
return SILLinkage::Private;
9090

9191
case AccessLevel::Internal:
9292
return (definition ? SILLinkage::Hidden : SILLinkage::HiddenExternal);
@@ -280,7 +280,6 @@ bool AbstractStorageDecl::exportsPropertyDescriptor() const {
280280
return false;
281281

282282
case SILLinkage::HiddenExternal:
283-
case SILLinkage::PrivateExternal:
284283
case SILLinkage::PublicExternal:
285284
case SILLinkage::SharedExternal:
286285
llvm_unreachable("should be definition linkage?");

lib/SIL/IR/SILDeclRef.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ SILLinkage SILDeclRef::getLinkage(ForDefinition_t forDefinition) const {
412412
switch (effectiveAccess) {
413413
case AccessLevel::Private:
414414
case AccessLevel::FilePrivate:
415-
return maybeAddExternal(SILLinkage::Private);
415+
return SILLinkage::Private;
416416

417417
case AccessLevel::Internal:
418418
if (limit == Limit::OnDemand)

lib/SIL/IR/SILDefaultWitnessTable.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,8 @@ convertToDefinition(ArrayRef<Entry> entries) {
9090
// Bump the reference count of witness functions referenced by this table.
9191
for (auto entry : getEntries()) {
9292
if (entry.isValid() && entry.getKind() == SILWitnessTable::Method) {
93-
entry.getMethodWitness().Witness->incrementRefCount();
93+
if (SILFunction *f = entry.getMethodWitness().Witness)
94+
f->incrementRefCount();
9495
}
9596
}
9697
}
@@ -105,7 +106,8 @@ SILDefaultWitnessTable::~SILDefaultWitnessTable() {
105106
// Drop the reference count of witness functions referenced by this table.
106107
for (auto entry : getEntries()) {
107108
if (entry.isValid() && entry.getKind() == SILWitnessTable::Method) {
108-
entry.getMethodWitness().Witness->decrementRefCount();
109+
if (SILFunction *f = entry.getMethodWitness().Witness)
110+
f->decrementRefCount();
109111
}
110112
}
111113
}

lib/SIL/IR/SILModule.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,10 @@ class SILModule::SerializationCallback final
7979
decl->setLinkage(SILLinkage::SharedExternal);
8080
return;
8181
case SILLinkage::Private:
82-
decl->setLinkage(SILLinkage::PrivateExternal);
83-
return;
82+
llvm_unreachable("cannot make a private external symbol");
8483
case SILLinkage::PublicExternal:
8584
case SILLinkage::HiddenExternal:
8685
case SILLinkage::SharedExternal:
87-
case SILLinkage::PrivateExternal:
8886
return;
8987
}
9088
}

lib/SIL/IR/SILPrinter.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2746,7 +2746,6 @@ static StringRef getLinkageString(SILLinkage linkage) {
27462746
case SILLinkage::PublicExternal: return "public_external ";
27472747
case SILLinkage::HiddenExternal: return "hidden_external ";
27482748
case SILLinkage::SharedExternal: return "shared_external ";
2749-
case SILLinkage::PrivateExternal: return "private_external ";
27502749
}
27512750
llvm_unreachable("bad linkage");
27522751
}

0 commit comments

Comments
 (0)