Skip to content

Commit 26fa381

Browse files
committed
Remove LinkEntity::isFragile which is always false now.
And remove all the code that is dead because of it.
1 parent e3f5829 commit 26fa381

File tree

3 files changed

+7
-72
lines changed

3 files changed

+7
-72
lines changed

include/swift/IRGen/Linking.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -567,11 +567,6 @@ class LinkEntity {
567567
///
568568
bool isAvailableExternally(IRGenModule &IGM) const;
569569

570-
/// Returns true if this function or global variable may be inlined into
571-
/// another module.
572-
///
573-
bool isFragile(ForDefinition_t isDefinition) const;
574-
575570
const ValueDecl *getDecl() const {
576571
assert(isDeclKind(getKind()));
577572
return reinterpret_cast<ValueDecl*>(Pointer);
@@ -686,7 +681,6 @@ class LinkInfo {
686681
static LinkInfo get(const UniversalLinkageInfo &linkInfo,
687682
StringRef name,
688683
SILLinkage linkage,
689-
bool isFragile,
690684
bool isSILOnly,
691685
ForDefinition_t isDefinition,
692686
bool isWeakImported);

lib/IRGen/GenDecl.cpp

Lines changed: 7 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1314,44 +1314,11 @@ bool LinkEntity::isAvailableExternally(IRGenModule &IGM) const {
13141314
llvm_unreachable("bad link entity kind");
13151315
}
13161316

1317-
bool LinkEntity::isFragile(ForDefinition_t isDefinition) const {
1318-
switch (getKind()) {
1319-
case Kind::SILFunction:
1320-
return getSILFunction()->isSerialized();
1321-
1322-
case Kind::SILGlobalVariable:
1323-
return getSILGlobalVariable()->isSerialized();
1324-
1325-
case Kind::ReflectionAssociatedTypeDescriptor:
1326-
case Kind::ReflectionSuperclassDescriptor:
1327-
case Kind::AssociatedTypeMetadataAccessFunction:
1328-
case Kind::AssociatedTypeWitnessTableAccessFunction:
1329-
case Kind::GenericProtocolWitnessTableCache:
1330-
case Kind::GenericProtocolWitnessTableInstantiationFunction:
1331-
case Kind::ObjCClassRef:
1332-
return false;
1333-
1334-
default:
1335-
break;
1336-
}
1337-
if (isProtocolConformanceKind(getKind())) {
1338-
auto conformance = getProtocolConformance();
1339-
1340-
auto conformanceModule = conformance->getDeclContext()->getParentModule();
1341-
auto isCompletelySerialized =
1342-
conformanceModule->getASTContext().LangOpts.SILSerializeWitnessTables;
1343-
1344-
// The conformance is fragile if it is in a -sil-serialize-all module.
1345-
return isCompletelySerialized;
1346-
}
1347-
return false;
1348-
}
1349-
13501317
static std::tuple<llvm::GlobalValue::LinkageTypes,
13511318
llvm::GlobalValue::VisibilityTypes,
13521319
llvm::GlobalValue::DLLStorageClassTypes>
13531320
getIRLinkage(const UniversalLinkageInfo &info, SILLinkage linkage,
1354-
bool isFragile, bool isSILOnly, ForDefinition_t isDefinition,
1321+
bool isSILOnly, ForDefinition_t isDefinition,
13551322
bool isWeakImported) {
13561323
#define RESULT(LINKAGE, VISIBILITY, DLL_STORAGE) \
13571324
std::make_tuple(llvm::GlobalValue::LINKAGE##Linkage, \
@@ -1372,29 +1339,6 @@ getIRLinkage(const UniversalLinkageInfo &info, SILLinkage linkage,
13721339
info.UseDLLStorage ? llvm::GlobalValue::DLLImportStorageClass
13731340
: llvm::GlobalValue::DefaultStorageClass;
13741341

1375-
if (isFragile) {
1376-
// Fragile functions/globals must be visible from outside, regardless of
1377-
// their access level. If a caller is also fragile and inlined into another
1378-
// module it must be able to access this (not-inlined) function/global.
1379-
switch (linkage) {
1380-
case SILLinkage::Hidden:
1381-
case SILLinkage::Private:
1382-
linkage = SILLinkage::Public;
1383-
break;
1384-
1385-
case SILLinkage::HiddenExternal:
1386-
case SILLinkage::PrivateExternal:
1387-
linkage = SILLinkage::PublicExternal;
1388-
break;
1389-
1390-
case SILLinkage::Public:
1391-
case SILLinkage::Shared:
1392-
case SILLinkage::PublicExternal:
1393-
case SILLinkage::SharedExternal:
1394-
break;
1395-
}
1396-
}
1397-
13981342
switch (linkage) {
13991343
case SILLinkage::Public:
14001344
// Don't code-gen transparent functions. Internal linkage will enable llvm
@@ -1453,8 +1397,7 @@ getIRLinkage(const UniversalLinkageInfo &info, SILLinkage linkage,
14531397
return std::make_tuple(isDefinition
14541398
? llvm::GlobalValue::AvailableExternallyLinkage
14551399
: llvm::GlobalValue::ExternalLinkage,
1456-
isFragile ? llvm::GlobalValue::DefaultVisibility
1457-
: llvm::GlobalValue::HiddenVisibility,
1400+
llvm::GlobalValue::HiddenVisibility,
14581401
ImportedStorage);
14591402

14601403
}
@@ -1472,7 +1415,7 @@ static void updateLinkageForDefinition(IRGenModule &IGM,
14721415
UniversalLinkageInfo linkInfo(IGM);
14731416
auto linkage =
14741417
getIRLinkage(linkInfo, entity.getLinkage(ForDefinition),
1475-
entity.isFragile(ForDefinition), entity.isSILOnly(),
1418+
entity.isSILOnly(),
14761419
ForDefinition, entity.isWeakImported(IGM.getSwiftModule()));
14771420
global->setLinkage(std::get<0>(linkage));
14781421
global->setVisibility(std::get<1>(linkage));
@@ -1504,7 +1447,7 @@ LinkInfo LinkInfo::get(const UniversalLinkageInfo &linkInfo,
15041447

15051448
std::tie(result.Linkage, result.Visibility, result.DLLStorageClass) =
15061449
getIRLinkage(linkInfo, entity.getLinkage(isDefinition),
1507-
entity.isFragile(isDefinition), entity.isSILOnly(),
1450+
entity.isSILOnly(),
15081451
isDefinition, entity.isWeakImported(swiftModule));
15091452

15101453
result.ForDefinition = isDefinition;
@@ -1515,20 +1458,19 @@ LinkInfo LinkInfo::get(const UniversalLinkageInfo &linkInfo,
15151458
LinkInfo LinkInfo::get(const UniversalLinkageInfo &linkInfo,
15161459
StringRef name,
15171460
SILLinkage linkage,
1518-
bool isFragile,
15191461
bool isSILOnly,
15201462
ForDefinition_t isDefinition,
15211463
bool isWeakImported) {
15221464
LinkInfo result;
1523-
1465+
15241466
result.Name += name;
15251467
std::tie(result.Linkage, result.Visibility, result.DLLStorageClass) =
1526-
getIRLinkage(linkInfo, linkage, isFragile, isSILOnly,
1468+
getIRLinkage(linkInfo, linkage, isSILOnly,
15271469
isDefinition, isWeakImported);
15281470
result.ForDefinition = isDefinition;
15291471
return result;
15301472
}
1531-
1473+
15321474
static bool isPointerTo(llvm::Type *ptrTy, llvm::Type *objTy) {
15331475
return cast<llvm::PointerType>(ptrTy)->getElementType() == objTy;
15341476
}

lib/IRGen/GenKeyPath.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,6 @@ getWitnessTableForComputedComponent(IRGenModule &IGM,
330330

331331
auto linkInfo = LinkInfo::get(IGM, "swift_keyPathGenericWitnessTable",
332332
SILLinkage::PublicExternal,
333-
/*fragile*/ false,
334333
/*sil only*/ false,
335334
NotForDefinition,
336335
/*weak imported*/ false);

0 commit comments

Comments
 (0)