Skip to content

Commit cc1e70d

Browse files
committed
IRGen: Value witness functions don't need shared linkage
1 parent d24f9d2 commit cc1e70d

13 files changed

+82
-97
lines changed

lib/IRGen/Linking.cpp

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -337,24 +337,6 @@ std::string LinkEntity::mangleAsString() const {
337337
llvm_unreachable("bad entity kind!");
338338
}
339339

340-
/// Get SIL-linkage for something that's not required to be visible
341-
/// and doesn't actually need to be uniqued.
342-
static SILLinkage getNonUniqueSILLinkage(FormalLinkage linkage,
343-
ForDefinition_t forDefinition) {
344-
switch (linkage) {
345-
case FormalLinkage::PublicUnique:
346-
case FormalLinkage::PublicNonUnique:
347-
return (forDefinition ? SILLinkage::Shared : SILLinkage::PublicExternal);
348-
349-
case FormalLinkage::HiddenUnique:
350-
return (forDefinition ? SILLinkage::Shared : SILLinkage::HiddenExternal);
351-
352-
case FormalLinkage::Private:
353-
return SILLinkage::Private;
354-
}
355-
llvm_unreachable("bad formal linkage");
356-
}
357-
358340
SILLinkage LinkEntity::getLinkage(ForDefinition_t forDefinition) const {
359341
// For when `this` is a protocol conformance of some kind.
360342
auto getLinkageAsConformance = [&] {
@@ -446,9 +428,12 @@ SILLinkage LinkEntity::getLinkage(ForDefinition_t forDefinition) const {
446428
llvm_unreachable("bad kind");
447429

448430
// ...but we don't actually expose individual value witnesses (right now).
449-
case Kind::ValueWitness:
450-
return getNonUniqueSILLinkage(getDeclLinkage(getType().getAnyNominal()),
451-
forDefinition);
431+
case Kind::ValueWitness: {
432+
auto *nominal = getType().getAnyNominal();
433+
if (getDeclLinkage(nominal) == FormalLinkage::PublicNonUnique)
434+
return SILLinkage::Shared;
435+
return forDefinition ? SILLinkage::Private : SILLinkage::PrivateExternal;
436+
}
452437

453438
// Foreign type metadata candidates are always shared; the runtime
454439
// does the uniquing.

test/DebugInfo/LoadableByAddress-allockstack.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,4 @@ struct h<i>{
4646
}
4747
}
4848

49-
// CHECK: define linkonce_odr hidden %swift.opaque* @"$s4main1mVwCP"
49+
// CHECK: define internal %swift.opaque* @"$s4main1mVwCP"

test/IRGen/big_types_corner_cases_as_library.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public struct BigStruct {
1212
var i8 : Int32 = 8
1313
}
1414

15-
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} linkonce_odr hidden %swift.opaque* @"$s33big_types_corner_cases_as_library9BigStructVwCP"
15+
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} internal %swift.opaque* @"$s33big_types_corner_cases_as_library9BigStructVwCP"
1616
// CHECK: [[RETVAL:%.*]] = bitcast %T33big_types_corner_cases_as_library9BigStructV* {{.*}} to %swift.opaque*
1717
// CHECK: ret %swift.opaque* [[RETVAL]]
1818
let bigStructGlobalArray : [BigStruct] = [

test/IRGen/enum.sil

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2688,7 +2688,7 @@ entry(%x : $*MyOptional):
26882688
// CHECK: [[T_LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[T_VWT]], i32 8
26892689
// CHECK: call void @swift_initEnumMetadataSinglePayload(%swift.type* [[METADATA]], [[WORD]] 0, i8** [[T_LAYOUT]], i32 3)
26902690

2691-
// CHECK-64-LABEL: define linkonce_odr hidden void @"$s4enum17StructWithWeakVarVwxs"(%swift.opaque* noalias %dest, i32 %index, %swift.type* %StructWithWeakVar)
2691+
// CHECK-64-LABEL: define internal void @"$s4enum17StructWithWeakVarVwxs"(%swift.opaque* noalias %dest, i32 %index, %swift.type* %StructWithWeakVar)
26922692
// -- TODO: some pointless masking here.
26932693
// -- TODO: should use EnumPayload word-chunking.
26942694
// CHECK-64: %1 = zext i32 %index to i128
@@ -2701,7 +2701,7 @@ entry(%x : $*MyOptional):
27012701
// -- 0x1__0000_0000_0000_0000
27022702
// CHECK-64: %6 = or i128 %5, 18446744073709551616
27032703

2704-
// CHECK-LABEL: define linkonce_odr hidden i32 @"$s4enum40MultiPayloadLessThan32BitsWithEmptyCasesOwug"(%swift.opaque* noalias %value
2704+
// CHECK-LABEL: define internal i32 @"$s4enum40MultiPayloadLessThan32BitsWithEmptyCasesOwug"(%swift.opaque* noalias %value
27052705
// CHECK: [[VAL00:%.*]] = bitcast %swift.opaque* %value to %T4enum40MultiPayloadLessThan32BitsWithEmptyCasesO*
27062706
// CHECK: [[VAL01:%.*]] = bitcast %T4enum40MultiPayloadLessThan32BitsWithEmptyCasesO* [[VAL00]] to i8*
27072707
// CHECK: [[VAL02:%.*]] = load {{.*}} [[VAL01]]
@@ -2716,7 +2716,7 @@ entry(%x : $*MyOptional):
27162716
// CHECK: [[VAL11:%.*]] = select i1 [[VAL10]], i32 [[VAL09]], i32 [[VAL06]]
27172717
// CHECK: ret i32 [[VAL11]]
27182718

2719-
// CHECK-LABEL: define linkonce_odr hidden void @"$s4enum40MultiPayloadLessThan32BitsWithEmptyCasesOwui"(%swift.opaque* noalias %value, i32 %tag
2719+
// CHECK-LABEL: define internal void @"$s4enum40MultiPayloadLessThan32BitsWithEmptyCasesOwui"(%swift.opaque* noalias %value, i32 %tag
27202720
// CHECK: entry:
27212721
// CHECK: [[VAL00:%.*]] = bitcast %swift.opaque* %value
27222722
// CHECK: [[VAL01:%.*]] = icmp uge i32 %tag, 2

test/IRGen/enum_objc.sil

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,4 +129,4 @@ x:
129129
}
130130

131131
// Weak existentials allow extra inhabitants if not @objc, therefore StructWithWeakVar must emit:
132-
// CHECK: define linkonce_odr hidden void @"$s9enum_objc17StructWithWeakVarVwxs"
132+
// CHECK: define internal void @"$s9enum_objc17StructWithWeakVarVwxs"

test/IRGen/enum_value_semantics.sil

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ bb0(%0 : $SinglePayloadNontrivial):
198198

199199

200200
// -- NoPayload getExtraInhabitants
201-
// CHECK-LABEL: define linkonce_odr hidden i32 @"$s20enum_value_semantics9NoPayloadOwxg"
201+
// CHECK-LABEL: define internal i32 @"$s20enum_value_semantics9NoPayloadOwxg"
202202
// CHECK: [[VALUE:%.*]] = load i8, i8* {{%.*}}, align 1
203203
// CHECK-NEXT: [[ZEXT:%.*]] = zext i8 [[VALUE]] to i32
204204
// CHECK-NEXT: [[SUB:%.*]] = sub i32 [[ZEXT]], 3
@@ -208,7 +208,7 @@ bb0(%0 : $SinglePayloadNontrivial):
208208

209209

210210
// -- NoPayload getEnumTag
211-
// CHECK-LABEL: define linkonce_odr hidden i32 @"$s20enum_value_semantics9NoPayloadOwug"
211+
// CHECK-LABEL: define internal i32 @"$s20enum_value_semantics9NoPayloadOwug"
212212
// CHECK: [[SELF:%.*]] = bitcast %swift.opaque* %value to %T20enum_value_semantics9NoPayloadO*
213213
// CHECK-NEXT: [[TAG_ADDR:%.*]] = getelementptr inbounds %T20enum_value_semantics9NoPayloadO, %T20enum_value_semantics9NoPayloadO* [[SELF]], i32 0, i32 0
214214
// CHECK-NEXT: [[TAG:%.*]] = load i8, i8* [[TAG_ADDR]], align 1
@@ -217,12 +217,12 @@ bb0(%0 : $SinglePayloadNontrivial):
217217

218218

219219
// -- NoPayload destructiveProjectEnumData
220-
// CHECK-LABEL: define linkonce_odr hidden void @"$s20enum_value_semantics9NoPayloadOwup"
220+
// CHECK-LABEL: define internal void @"$s20enum_value_semantics9NoPayloadOwup"
221221
// CHECK: ret void
222222

223223

224224
// -- NoPayload destructiveInjectEnumTag
225-
// CHECK-LABEL: define linkonce_odr hidden void @"$s20enum_value_semantics9NoPayloadOwui"
225+
// CHECK-LABEL: define internal void @"$s20enum_value_semantics9NoPayloadOwui"
226226
// CHECK: [[SELF:%.*]] = bitcast %swift.opaque* %value to %T20enum_value_semantics9NoPayloadO*
227227
// CHECK-NEXT: [[TAG:%.*]] = trunc i32 %tag to i8
228228
// CHECK-NEXT: [[TAG_ADDR:%.*]] = getelementptr inbounds %T20enum_value_semantics9NoPayloadO, %T20enum_value_semantics9NoPayloadO* [[SELF]], i32 0, i32 0
@@ -236,32 +236,32 @@ bb0(%0 : $SinglePayloadNontrivial):
236236

237237

238238
// -- SingletonPayload getEnumTag
239-
// CHECK-LABEL: define linkonce_odr hidden i32 @"$s20enum_value_semantics16SingletonPayloadOwug"
239+
// CHECK-LABEL: define internal i32 @"$s20enum_value_semantics16SingletonPayloadOwug"
240240
// CHECK: [[SELF:%.*]] = bitcast %swift.opaque* %value to %T20enum_value_semantics16SingletonPayloadO*
241241
// CHECK-NEXT: ret i32 0
242242

243243

244244
// -- SingletonPayload destructiveProjectEnumData
245-
// CHECK-LABEL: define linkonce_odr hidden void @"$s20enum_value_semantics16SingletonPayloadOwup"
245+
// CHECK-LABEL: define internal void @"$s20enum_value_semantics16SingletonPayloadOwup"
246246
// CHECK: ret void
247247

248248

249249
// -- SingletonPayload destructiveInjectEnumTag
250-
// CHECK-LABEL: define linkonce_odr hidden void @"$s20enum_value_semantics16SingletonPayloadOwui"
250+
// CHECK-LABEL: define internal void @"$s20enum_value_semantics16SingletonPayloadOwui"
251251
// CHECK: [[SELF:%.*]] = bitcast %swift.opaque* %value to %T20enum_value_semantics16SingletonPayloadO*
252252
// CHECK-NEXT: ret void
253253

254254

255255
// -- SinglePayloadTrivial getEnumTag
256-
// CHECK-LABEL: define linkonce_odr hidden i32 @"$s20enum_value_semantics20SinglePayloadTrivialOwug"
256+
// CHECK-LABEL: define internal i32 @"$s20enum_value_semantics20SinglePayloadTrivialOwug"
257257
// CHECK: [[SELF:%.*]] = bitcast %swift.opaque* %value to %T20enum_value_semantics20SinglePayloadTrivialO*
258258
// CHECK: [[OPAQUE:%.*]] = bitcast %T20enum_value_semantics20SinglePayloadTrivialO* [[SELF]] to %swift.opaque*
259259
// CHECK: [[TAG:%.*]] = call i32 %getEnumTagSinglePayload(%swift.opaque* noalias [[OPAQUE]], i32 3, %swift.type* getelementptr inbounds (%swift.full_type, %swift.full_type* @"$sBi64_N", i32 0, i32 1))
260260
// CHECK: ret i32 [[TAG]]
261261

262262

263263
// -- SinglePayloadTrivial destructiveProjectEnumData
264-
// CHECK-LABEL: define linkonce_odr hidden void @"$s20enum_value_semantics20SinglePayloadTrivialOwup"
264+
// CHECK-LABEL: define internal void @"$s20enum_value_semantics20SinglePayloadTrivialOwup"
265265
// CHECK: ret void
266266

267267

@@ -271,15 +271,15 @@ bb0(%0 : $SinglePayloadNontrivial):
271271

272272

273273
// -- SinglePayloadTrivial destructiveInjectEnumTag
274-
// CHECK-LABEL: define linkonce_odr hidden void @"$s20enum_value_semantics20SinglePayloadTrivialOwui"
274+
// CHECK-LABEL: define internal void @"$s20enum_value_semantics20SinglePayloadTrivialOwui"
275275
// CHECK: [[SELF:%.*]] = bitcast %swift.opaque* %value to %T20enum_value_semantics20SinglePayloadTrivialO*
276276
// CHECK-NEXT: [[OPAQUE:%.*]] = bitcast %T20enum_value_semantics20SinglePayloadTrivialO* [[SELF]] to %swift.opaque*
277277
// CHECK: call void %storeEnumTagSinglePayload(%swift.opaque* noalias [[OPAQUE]], i32 %tag, i32 3, %swift.type* getelementptr inbounds (%swift.full_type, %swift.full_type* @"$sBi64_N", i32 0, i32 1))
278278
// CHECK-NEXT: ret void
279279

280280

281281
// -- SinglePayloadNontrivial destroyBuffer
282-
// CHECK: define linkonce_odr hidden void @"$s20enum_value_semantics23SinglePayloadNontrivialOwxx"(%swift.opaque* noalias [[OBJ:%.*]], %swift.type* %SinglePayloadNontrivial) {{.*}} {
282+
// CHECK: define internal void @"$s20enum_value_semantics23SinglePayloadNontrivialOwxx"(%swift.opaque* noalias [[OBJ:%.*]], %swift.type* %SinglePayloadNontrivial) {{.*}} {
283283
// CHECK: [[ADDR:%.*]] = bitcast %swift.opaque* [[OBJ]] to %T20enum_value_semantics23SinglePayloadNontrivialO*
284284
// CHECK-NEXT: [[PAYLOAD_ADDR:%.*]] = bitcast %T20enum_value_semantics23SinglePayloadNontrivialO* [[ADDR]] to i64*
285285
// CHECK-NEXT: [[PAYLOAD:%.*]] = load i64, i64* [[PAYLOAD_ADDR]], align 8
@@ -309,7 +309,7 @@ bb0(%0 : $SinglePayloadNontrivial):
309309

310310

311311
// -- MultiPayloadTrivial getEnumTag
312-
// CHECK-LABEL: define linkonce_odr hidden i32 @"$s20enum_value_semantics19MultiPayloadTrivialOwug"
312+
// CHECK-LABEL: define internal i32 @"$s20enum_value_semantics19MultiPayloadTrivialOwug"
313313
// CHECK: [[SELF:%.*]] = bitcast %swift.opaque* %value to %T20enum_value_semantics19MultiPayloadTrivialO*
314314
// CHECK-NEXT: [[PAYLOAD:%.*]] = bitcast %T20enum_value_semantics19MultiPayloadTrivialO* [[SELF]] to i64*
315315

@@ -334,12 +334,12 @@ bb0(%0 : $SinglePayloadNontrivial):
334334
// CHECK-NEXT: ret i32 [[TAG]]
335335

336336
// -- MultiPayloadTrivial destructiveProjectEnumData
337-
// CHECK-LABEL: define linkonce_odr hidden void @"$s20enum_value_semantics19MultiPayloadTrivialOwup"
337+
// CHECK-LABEL: define internal void @"$s20enum_value_semantics19MultiPayloadTrivialOwup"
338338
// CHECK: ret void
339339

340340

341341
// -- MultiPayloadTrivial destructiveInjectEnumTag
342-
// CHECK-LABEL: define linkonce_odr hidden void @"$s20enum_value_semantics19MultiPayloadTrivialOwui"
342+
// CHECK-LABEL: define internal void @"$s20enum_value_semantics19MultiPayloadTrivialOwui"
343343
// CHECK: [[SELF:%.*]] = bitcast %swift.opaque* %value to %T20enum_value_semantics19MultiPayloadTrivialO*
344344
// CHECK-NEXT: [[IS_PAYLOAD:%.*]] = icmp uge i32 %tag, 2
345345
// CHECK-NEXT: br i1 [[IS_PAYLOAD]], label %[[HAS_NO_PAYLOAD:.*]], label %[[HAS_PAYLOAD:.*]]
@@ -379,7 +379,7 @@ bb0(%0 : $SinglePayloadNontrivial):
379379

380380

381381
// -- MultiPayloadNoEmptyCases getEnumTag
382-
// CHECK-LABEL: define linkonce_odr hidden i32 @"$s20enum_value_semantics24MultiPayloadNoEmptyCasesOwug"
382+
// CHECK-LABEL: define internal i32 @"$s20enum_value_semantics24MultiPayloadNoEmptyCasesOwug"
383383
// CHECK: [[SELF:%.*]] = bitcast %swift.opaque* %value to %T20enum_value_semantics24MultiPayloadNoEmptyCasesO*
384384
// CHECK-NEXT: [[PAYLOAD:%.*]] = bitcast %T20enum_value_semantics24MultiPayloadNoEmptyCasesO* [[SELF]] to i64*
385385
// CHECK-NEXT: [[NO_PAYLOAD_TAG_TMP:%.*]] = load i64, i64* [[PAYLOAD]], align 8
@@ -393,12 +393,12 @@ bb0(%0 : $SinglePayloadNontrivial):
393393
// CHECK-NEXT: ret i32 [[EXTRA_TAG]]
394394

395395
// -- MultiPayloadNoEmptyCases destructiveProjectEnumData
396-
// CHECK-LABEL: define linkonce_odr hidden void @"$s20enum_value_semantics24MultiPayloadNoEmptyCasesOwup"
396+
// CHECK-LABEL: define internal void @"$s20enum_value_semantics24MultiPayloadNoEmptyCasesOwup"
397397
// CHECK: ret void
398398

399399

400400
// -- MultiPayloadNoEmptyCases destructiveInjectEnumTag
401-
// CHECK-LABEL: define linkonce_odr hidden void @"$s20enum_value_semantics24MultiPayloadNoEmptyCasesOwui"
401+
// CHECK-LABEL: define internal void @"$s20enum_value_semantics24MultiPayloadNoEmptyCasesOwui"
402402
// CHECK: [[SELF:%.*]] = bitcast %swift.opaque* %value to %T20enum_value_semantics24MultiPayloadNoEmptyCasesO*
403403
// CHECK-NEXT: [[TAG:%.*]] = trunc i32 %tag to i1
404404

@@ -415,7 +415,7 @@ bb0(%0 : $SinglePayloadNontrivial):
415415

416416

417417
// -- MultiPayloadEmptyPayload getEnumTag
418-
// CHECK-LABEL: define linkonce_odr hidden i32 @"$s20enum_value_semantics017MultiPayloadEmptyE0Owug"
418+
// CHECK-LABEL: define internal i32 @"$s20enum_value_semantics017MultiPayloadEmptyE0Owug"
419419
// CHECK: [[SELF:%.*]] = bitcast %swift.opaque* %value to %T20enum_value_semantics017MultiPayloadEmptyE0O*
420420

421421
// -- Load the tag from the extra tag area
@@ -426,12 +426,12 @@ bb0(%0 : $SinglePayloadNontrivial):
426426

427427

428428
// -- MultiPayloadEmptyPayload destructiveProjectEnumData
429-
// CHECK-LABEL: define linkonce_odr hidden void @"$s20enum_value_semantics017MultiPayloadEmptyE0Owup"
429+
// CHECK-LABEL: define internal void @"$s20enum_value_semantics017MultiPayloadEmptyE0Owup"
430430
// CHECK: ret void
431431

432432

433433
// -- MultiPayloadEmptyPayload destructiveInjectEnumTag
434-
// CHECK-LABEL: define linkonce_odr hidden void @"$s20enum_value_semantics017MultiPayloadEmptyE0Owui"
434+
// CHECK-LABEL: define internal void @"$s20enum_value_semantics017MultiPayloadEmptyE0Owui"
435435
// CHECK: [[SELF:%.*]] = bitcast %swift.opaque* %value to %T20enum_value_semantics017MultiPayloadEmptyE0O*
436436

437437
// -- Store the tag in the extra tag area
@@ -447,7 +447,7 @@ bb0(%0 : $SinglePayloadNontrivial):
447447

448448

449449
// -- MultiPayloadNontrivial destroyBuffer
450-
// CHECK: define linkonce_odr hidden void @"$s20enum_value_semantics22MultiPayloadNontrivialOwxx"(%swift.opaque* noalias [[OBJ:%.*]], %swift.type* %MultiPayloadNontrivial)
450+
// CHECK: define internal void @"$s20enum_value_semantics22MultiPayloadNontrivialOwxx"(%swift.opaque* noalias [[OBJ:%.*]], %swift.type* %MultiPayloadNontrivial)
451451
// CHECK: [[ADDR:%.*]] = bitcast %swift.opaque* [[OBJ]] to %T20enum_value_semantics22MultiPayloadNontrivialO*
452452
// CHECK-NEXT: [[PAYLOAD_ADDR:%.*]] = bitcast %T20enum_value_semantics22MultiPayloadNontrivialO* [[ADDR]] to { i64, i64 }*
453453
// CHECK-NEXT: [[PAYLOAD_0_ADDR:%.*]] = getelementptr
@@ -466,18 +466,18 @@ bb0(%0 : $SinglePayloadNontrivial):
466466
//
467467

468468

469-
// CHECK-LABEL: define linkonce_odr hidden i32 @"$s20enum_value_semantics19MultiPayloadGenericOwug"
469+
// CHECK-LABEL: define internal i32 @"$s20enum_value_semantics19MultiPayloadGenericOwug"
470470
// CHECK: [[SELF:%.*]] = bitcast %swift.opaque* %value to %T20enum_value_semantics19MultiPayloadGenericO*
471471
// CHECK-NEXT: [[OPAQUE:%.*]] = bitcast %T20enum_value_semantics19MultiPayloadGenericO* [[SELF]] to %swift.opaque*
472472
// CHECK-NEXT: [[TAG:%.*]] = call i32 @swift_getEnumCaseMultiPayload(%swift.opaque* [[OPAQUE]], %swift.type* %"MultiPayloadGeneric<T>")
473473
// CHECK-NEXT: ret i32 [[TAG]]
474474

475475

476-
// CHECK-LABEL: define linkonce_odr hidden void @"$s20enum_value_semantics19MultiPayloadGenericOwup"
476+
// CHECK-LABEL: define internal void @"$s20enum_value_semantics19MultiPayloadGenericOwup"
477477
// CHECK: ret void
478478

479479

480-
// CHECK-LABEL: define linkonce_odr hidden void @"$s20enum_value_semantics19MultiPayloadGenericOwui"
480+
// CHECK-LABEL: define internal void @"$s20enum_value_semantics19MultiPayloadGenericOwui"
481481
// CHECK: [[SELF:%.*]] = bitcast %swift.opaque* %value to %T20enum_value_semantics19MultiPayloadGenericO*
482482
// CHECK: [[OPAQUE:%.*]] = bitcast %T20enum_value_semantics19MultiPayloadGenericO* [[SELF]] to %swift.opaque*
483483
// CHECK-NEXT: call void @swift_storeEnumTagMultiPayload(%swift.opaque* [[OPAQUE]], %swift.type* %"MultiPayloadGeneric<T>", i32 %tag)
@@ -490,7 +490,7 @@ bb0(%0 : $SinglePayloadNontrivial):
490490

491491

492492
// -- MultiPayloadNontrivialSpareBits destroyBuffer
493-
// CHECK-LABEL: define linkonce_odr hidden void @"$s20enum_value_semantics31MultiPayloadNontrivialSpareBitsOwxx"
493+
// CHECK-LABEL: define internal void @"$s20enum_value_semantics31MultiPayloadNontrivialSpareBitsOwxx"
494494
// CHECK-SAME: (%swift.opaque* noalias [[OBJ:%.*]], %swift.type* %MultiPayloadNontrivialSpareBits) {{.*}} {
495495
// CHECK: [[ADDR:%.*]] = bitcast %swift.opaque* [[OBJ]] to %T20enum_value_semantics31MultiPayloadNontrivialSpareBitsO*
496496
// CHECK-NEXT: [[PAYLOAD_ADDR:%.*]] = bitcast %T20enum_value_semantics31MultiPayloadNontrivialSpareBitsO* [[ADDR]] to { i64, i64 }*
@@ -502,7 +502,7 @@ bb0(%0 : $SinglePayloadNontrivial):
502502
// CHECK-NEXT: ret void
503503

504504

505-
// CHECK-LABEL: define linkonce_odr hidden i32 @"$s20enum_value_semantics31MultiPayloadNontrivialSpareBitsOwug"
505+
// CHECK-LABEL: define internal i32 @"$s20enum_value_semantics31MultiPayloadNontrivialSpareBitsOwug"
506506
// CHECK: [[SELF:%.*]] = bitcast %swift.opaque* %value to %T20enum_value_semantics31MultiPayloadNontrivialSpareBitsO*
507507

508508
// -- Load the payload
@@ -529,7 +529,7 @@ bb0(%0 : $SinglePayloadNontrivial):
529529
// CHECK-NEXT: [[TAG:%.*]] = select i1 [[IS_PAYLOAD]], i32 [[NO_PAYLOAD_TAG2]], i32 [[SPARE_TAG]]
530530
// CHECK-NEXT: ret i32 [[TAG]]
531531

532-
// CHECK-LABEL: define linkonce_odr hidden void @"$s20enum_value_semantics31MultiPayloadNontrivialSpareBitsOwup"
532+
// CHECK-LABEL: define internal void @"$s20enum_value_semantics31MultiPayloadNontrivialSpareBitsOwup"
533533
// CHECK: [[SELF:%.*]] = bitcast %swift.opaque* %value to { i64, i64 }*
534534

535535
// -- Load the payload
@@ -550,7 +550,7 @@ bb0(%0 : $SinglePayloadNontrivial):
550550
// CHECK-NEXT: ret void
551551

552552

553-
// CHECK-LABEL: define linkonce_odr hidden void @"$s20enum_value_semantics31MultiPayloadNontrivialSpareBitsOwui"
553+
// CHECK-LABEL: define internal void @"$s20enum_value_semantics31MultiPayloadNontrivialSpareBitsOwui"
554554
// CHECK: [[SELF:%.*]] = bitcast %swift.opaque* %value to %T20enum_value_semantics31MultiPayloadNontrivialSpareBitsO*
555555
// CHECK-NEXT: [[IS_PAYLOAD:%.*]] = icmp uge i32 %tag, 3
556556
// CHECK-NEXT: br i1 [[IS_PAYLOAD]], label %[[HAS_NO_PAYLOAD:.*]], label %[[HAS_PAYLOAD:.*]]
@@ -609,7 +609,7 @@ bb0(%0 : $SinglePayloadNontrivial):
609609
// CHECK-NEXT: ret void
610610

611611

612-
// CHECK-LABEL: define linkonce_odr hidden i32 @"$s20enum_value_semantics029MultiPayloadSpareBitsAndExtraG0Owug"
612+
// CHECK-LABEL: define internal i32 @"$s20enum_value_semantics029MultiPayloadSpareBitsAndExtraG0Owug"
613613
// CHECK: [[SELF:%.*]] = bitcast %swift.opaque* %value to %T20enum_value_semantics029MultiPayloadSpareBitsAndExtraG0O*
614614

615615
// -- Load the payload
@@ -634,7 +634,7 @@ bb0(%0 : $SinglePayloadNontrivial):
634634
// CHECK-NEXT: ret i32 [[RESULT]]
635635

636636

637-
// CHECK-LABEL: define linkonce_odr hidden void @"$s20enum_value_semantics029MultiPayloadSpareBitsAndExtraG0Owup"
637+
// CHECK-LABEL: define internal void @"$s20enum_value_semantics029MultiPayloadSpareBitsAndExtraG0Owup"
638638
// CHECK: [[PAYLOAD_ADDR:%.*]] = bitcast %swift.opaque* %value to i64*
639639
// CHECK-NEXT: [[PAYLOAD:%.*]] = load i64, i64* [[PAYLOAD_ADDR]], align 8
640640
// -- 0x7fffffffffffffff
@@ -644,7 +644,7 @@ bb0(%0 : $SinglePayloadNontrivial):
644644
// CHECK-NEXT: ret void
645645

646646

647-
// CHECK-LABEL: define linkonce_odr hidden void @"$s20enum_value_semantics029MultiPayloadSpareBitsAndExtraG0Owui"
647+
// CHECK-LABEL: define internal void @"$s20enum_value_semantics029MultiPayloadSpareBitsAndExtraG0Owui"
648648
// CHECK: [[SELF:%.*]] = bitcast %swift.opaque* %value to %T20enum_value_semantics029MultiPayloadSpareBitsAndExtraG0O*
649649
// CHECK-NEXT: [[SPARE_TAG_TMP3:%.*]] = and i32 %tag, 1
650650

0 commit comments

Comments
 (0)