@@ -58,10 +58,14 @@ enum class SILLinkage : uint8_t {
58
58
// / PublicNonABI functions must be definitions.
59
59
PublicNonABI,
60
60
61
- // / Visible to multiple Swift modules within a package.
61
+ // / Same as \c Public, except the definition is visible within a package
62
+ // / of modules.
62
63
Package,
63
64
64
- // / Used for default argument expressions and `@_alwaysEmitIntoClient`.
65
+ // / Similar to \c PublicNonABI, this definition is used for symbols treated
66
+ // / as package but do not have package entry points in the generated binary.
67
+ // / It's used for default argument expressions and `@_alwaysEmitIntoClient`.
68
+ // / When deserialized, this will become \c Shared linkage.
65
69
PackageNonABI,
66
70
67
71
// / This object definition is visible only to the current Swift
@@ -97,7 +101,9 @@ enum class SILLinkage : uint8_t {
97
101
// / definition.
98
102
PublicExternal,
99
103
100
- // / Used to reference a package symbol in a different package.
104
+ // / Similar to \c PublicExternal.
105
+ // / Used to reference a \c Package definition in a different module
106
+ // / within a package.
101
107
PackageExternal,
102
108
103
109
// / A Public or Hidden definition with the same name as this object
@@ -244,36 +250,20 @@ inline bool isAvailableExternally(SILLinkage linkage) {
244
250
// / definition might be required outside the current SILModule.
245
251
// / If \p is true then we are in whole-module compilation.
246
252
inline bool isPossiblyUsedExternally (SILLinkage linkage, bool wholeModule) {
247
- if (wholeModule) {
248
- switch (linkage) {
249
- case SILLinkage::Public:
250
- case SILLinkage::PublicNonABI:
251
- case SILLinkage::Package:
252
- case SILLinkage::PackageNonABI:
253
- return true ;
254
- case SILLinkage::Hidden:
255
- case SILLinkage::Shared:
256
- case SILLinkage::Private:
257
- case SILLinkage::PublicExternal:
258
- case SILLinkage::PackageExternal:
259
- case SILLinkage::HiddenExternal:
260
- return false ;
261
- }
262
- } else {
263
- switch (linkage) {
264
- case SILLinkage::Public:
265
- case SILLinkage::PublicNonABI:
266
- case SILLinkage::Package:
267
- case SILLinkage::PackageNonABI:
268
- case SILLinkage::Hidden:
269
- return true ;
270
- case SILLinkage::Shared:
271
- case SILLinkage::Private:
272
- case SILLinkage::PublicExternal:
273
- case SILLinkage::PackageExternal:
274
- case SILLinkage::HiddenExternal:
275
- return false ;
276
- }
253
+ switch (linkage) {
254
+ case SILLinkage::Public:
255
+ case SILLinkage::PublicNonABI:
256
+ case SILLinkage::Package:
257
+ case SILLinkage::PackageNonABI:
258
+ return true ;
259
+ case SILLinkage::Hidden:
260
+ return wholeModule;
261
+ case SILLinkage::Shared:
262
+ case SILLinkage::Private:
263
+ case SILLinkage::PublicExternal:
264
+ case SILLinkage::PackageExternal:
265
+ case SILLinkage::HiddenExternal:
266
+ return false ;
277
267
}
278
268
llvm_unreachable (" Unhandled SILLinkage in switch." );
279
269
}
@@ -342,18 +332,18 @@ inline SILLinkage effectiveLinkageForClassMember(SILLinkage linkage,
342
332
switch (scope) {
343
333
case SubclassScope::External:
344
334
switch (linkage) {
345
- case SILLinkage::Package:
346
335
case SILLinkage::Hidden:
347
- case SILLinkage::Shared:
348
336
case SILLinkage::Private:
349
337
return SILLinkage::Public;
350
- case SILLinkage::PackageExternal:
351
338
case SILLinkage::HiddenExternal:
352
339
return SILLinkage::PublicExternal;
353
340
case SILLinkage::Public:
354
341
case SILLinkage::PublicNonABI:
355
- case SILLinkage::PublicExternal :
342
+ case SILLinkage::Package :
356
343
case SILLinkage::PackageNonABI:
344
+ case SILLinkage::PublicExternal:
345
+ case SILLinkage::PackageExternal:
346
+ case SILLinkage::Shared:
357
347
break ;
358
348
}
359
349
break ;
0 commit comments