Skip to content

Commit 8d6b60f

Browse files
committed
Mangling: Use WO namespace for outlined value operations to declutter W namespace
1 parent aa10174 commit 8d6b60f

21 files changed

+117
-112
lines changed

lib/Demangling/Demangler.cpp

Lines changed: 52 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -2108,54 +2108,59 @@ NodePointer Demangler::demangleWitness() {
21082108
return createWithChildren(Node::Kind::AssociatedTypeWitnessTableAccessor,
21092109
Conf, AssocTypePath, ProtoTy);
21102110
}
2111-
case 'y': {
2112-
if (auto sig = popNode(Node::Kind::DependentGenericSignature))
2113-
return createWithChildren(Node::Kind::OutlinedCopy,
2114-
popNode(Node::Kind::Type), sig);
2115-
return createWithChild(Node::Kind::OutlinedCopy,
2116-
popNode(Node::Kind::Type));
2117-
}
2118-
case 'e': {
2119-
if (auto sig = popNode(Node::Kind::DependentGenericSignature))
2120-
return createWithChildren(Node::Kind::OutlinedCopy,
2121-
popNode(Node::Kind::Type), sig);
2122-
return createWithChild(Node::Kind::OutlinedConsume,
2123-
popNode(Node::Kind::Type));
2124-
}
2125-
case 'r': {
2126-
return createWithChild(Node::Kind::OutlinedRetain,
2127-
popNode(Node::Kind::Type));
2128-
}
2129-
case 's': {
2130-
return createWithChild(Node::Kind::OutlinedRelease,
2131-
popNode(Node::Kind::Type));
2132-
}
2133-
case 'b': {
2134-
NodePointer IndexChild = demangleIndexAsNode();
2135-
return createWithChildren(Node::Kind::OutlinedInitializeWithTake,
2136-
popNode(Node::Kind::Type), IndexChild);
2137-
}
2138-
case 'c': {
2139-
NodePointer IndexChild = demangleIndexAsNode();
2140-
return createWithChildren(Node::Kind::OutlinedInitializeWithCopy,
2141-
popNode(Node::Kind::Type), IndexChild);
2142-
}
2143-
case 'd': {
2144-
NodePointer IndexChild = demangleIndexAsNode();
2145-
return createWithChildren(Node::Kind::OutlinedAssignWithTake,
2146-
popNode(Node::Kind::Type), IndexChild);
2147-
}
2148-
case 'f': {
2149-
NodePointer IndexChild = demangleIndexAsNode();
2150-
return createWithChildren(Node::Kind::OutlinedAssignWithCopy,
2151-
popNode(Node::Kind::Type), IndexChild);
2152-
}
2153-
case 'h': {
2154-
NodePointer IndexChild = demangleIndexAsNode();
2155-
return createWithChildren(Node::Kind::OutlinedDestroy,
2156-
popNode(Node::Kind::Type), IndexChild);
2111+
case 'O': {
2112+
switch (nextChar()) {
2113+
case 'y': {
2114+
if (auto sig = popNode(Node::Kind::DependentGenericSignature))
2115+
return createWithChildren(Node::Kind::OutlinedCopy,
2116+
popNode(Node::Kind::Type), sig);
2117+
return createWithChild(Node::Kind::OutlinedCopy,
2118+
popNode(Node::Kind::Type));
2119+
}
2120+
case 'e': {
2121+
if (auto sig = popNode(Node::Kind::DependentGenericSignature))
2122+
return createWithChildren(Node::Kind::OutlinedCopy,
2123+
popNode(Node::Kind::Type), sig);
2124+
return createWithChild(Node::Kind::OutlinedConsume,
2125+
popNode(Node::Kind::Type));
2126+
}
2127+
case 'r': {
2128+
return createWithChild(Node::Kind::OutlinedRetain,
2129+
popNode(Node::Kind::Type));
2130+
}
2131+
case 's': {
2132+
return createWithChild(Node::Kind::OutlinedRelease,
2133+
popNode(Node::Kind::Type));
2134+
}
2135+
case 'b': {
2136+
NodePointer IndexChild = demangleIndexAsNode();
2137+
return createWithChildren(Node::Kind::OutlinedInitializeWithTake,
2138+
popNode(Node::Kind::Type), IndexChild);
2139+
}
2140+
case 'c': {
2141+
NodePointer IndexChild = demangleIndexAsNode();
2142+
return createWithChildren(Node::Kind::OutlinedInitializeWithCopy,
2143+
popNode(Node::Kind::Type), IndexChild);
2144+
}
2145+
case 'd': {
2146+
NodePointer IndexChild = demangleIndexAsNode();
2147+
return createWithChildren(Node::Kind::OutlinedAssignWithTake,
2148+
popNode(Node::Kind::Type), IndexChild);
2149+
}
2150+
case 'f': {
2151+
NodePointer IndexChild = demangleIndexAsNode();
2152+
return createWithChildren(Node::Kind::OutlinedAssignWithCopy,
2153+
popNode(Node::Kind::Type), IndexChild);
2154+
}
2155+
case 'h': {
2156+
NodePointer IndexChild = demangleIndexAsNode();
2157+
return createWithChildren(Node::Kind::OutlinedDestroy,
2158+
popNode(Node::Kind::Type), IndexChild);
2159+
}
2160+
default:
2161+
return nullptr;
2162+
}
21572163
}
2158-
21592164
default:
21602165
return nullptr;
21612166
}

lib/Demangling/Remangler.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1843,51 +1843,51 @@ void Remangler::mangleVariadicMarker(Node *node) {
18431843

18441844
void Remangler::mangleOutlinedCopy(Node *node) {
18451845
mangleChildNodes(node);
1846-
Buffer << "Wy";
1846+
Buffer << "WOy";
18471847
}
18481848

18491849
void Remangler::mangleOutlinedConsume(Node *node) {
18501850
mangleChildNodes(node);
1851-
Buffer << "We";
1851+
Buffer << "WOe";
18521852
}
18531853

18541854
void Remangler::mangleOutlinedRetain(Node *node) {
18551855
mangleSingleChildNode(node);
1856-
Buffer << "Wr";
1856+
Buffer << "WOr";
18571857
}
18581858

18591859
void Remangler::mangleOutlinedRelease(Node *node) {
18601860
mangleSingleChildNode(node);
1861-
Buffer << "Ws";
1861+
Buffer << "WOs";
18621862
}
18631863

18641864
void Remangler::mangleOutlinedInitializeWithTake(Node *node) {
18651865
mangleChildNode(node, 0);
1866-
Buffer << "Wb";
1866+
Buffer << "WOb";
18671867
mangleChildNode(node, 1);
18681868
}
18691869

18701870
void Remangler::mangleOutlinedInitializeWithCopy(Node *node) {
18711871
mangleChildNode(node, 0);
1872-
Buffer << "Wc";
1872+
Buffer << "WOc";
18731873
mangleChildNode(node, 1);
18741874
}
18751875

18761876
void Remangler::mangleOutlinedAssignWithTake(Node *node) {
18771877
mangleChildNode(node, 0);
1878-
Buffer << "Wd";
1878+
Buffer << "WOd";
18791879
mangleChildNode(node, 1);
18801880
}
18811881

18821882
void Remangler::mangleOutlinedAssignWithCopy(Node *node) {
18831883
mangleChildNode(node, 0);
1884-
Buffer << "Wf";
1884+
Buffer << "WOf";
18851885
mangleChildNode(node, 1);
18861886
}
18871887

18881888
void Remangler::mangleOutlinedDestroy(Node *node) {
18891889
mangleChildNode(node, 0);
1890-
Buffer << "Wh";
1890+
Buffer << "WOh";
18911891
mangleChildNode(node, 1);
18921892
}
18931893

lib/IRGen/IRGenMangler.h

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ class IRGenMangler : public Mangle::ASTMangler {
246246
appendType(ty);
247247
if (sig)
248248
appendGenericSignature(sig);
249-
appendOperator("Wy");
249+
appendOperator("WOy");
250250
return finalize();
251251
}
252252
std::string mangleOutlinedConsumeFunction(CanType ty,
@@ -255,20 +255,20 @@ class IRGenMangler : public Mangle::ASTMangler {
255255
appendType(ty);
256256
if (sig)
257257
appendGenericSignature(sig);
258-
appendOperator("We");
258+
appendOperator("WOe");
259259
return finalize();
260260
}
261261

262262
std::string mangleOutlinedRetainFunction(Type t) {
263263
beginMangling();
264264
appendType(t);
265-
appendOperator("Wr");
265+
appendOperator("WOr");
266266
return finalize();
267267
}
268268
std::string mangleOutlinedReleaseFunction(Type t) {
269269
beginMangling();
270270
appendType(t);
271-
appendOperator("Ws");
271+
appendOperator("WOs");
272272
return finalize();
273273
}
274274

@@ -277,12 +277,12 @@ class IRGenMangler : public Mangle::ASTMangler {
277277
beginMangling();
278278
if (!t->hasArchetype()) {
279279
appendType(t);
280-
appendOperator("Wb", Index(1));
280+
appendOperator("WOb", Index(1));
281281
} else {
282282
appendModule(mod->getSwiftModule());
283283
appendOperator("y");
284284
appendOperator("t");
285-
appendOperator("Wb", Index(mod->getCanTypeID(t)));
285+
appendOperator("WOb", Index(mod->getCanTypeID(t)));
286286
}
287287
return finalize();
288288
}
@@ -291,12 +291,12 @@ class IRGenMangler : public Mangle::ASTMangler {
291291
beginMangling();
292292
if (!t->hasArchetype()) {
293293
appendType(t);
294-
appendOperator("Wc", Index(1));
294+
appendOperator("WOc", Index(1));
295295
} else {
296296
appendModule(mod->getSwiftModule());
297297
appendOperator("y");
298298
appendOperator("t");
299-
appendOperator("Wc", Index(mod->getCanTypeID(t)));
299+
appendOperator("WOc", Index(mod->getCanTypeID(t)));
300300
}
301301
return finalize();
302302
}
@@ -305,12 +305,12 @@ class IRGenMangler : public Mangle::ASTMangler {
305305
beginMangling();
306306
if (!t->hasArchetype()) {
307307
appendType(t);
308-
appendOperator("Wd", Index(1));
308+
appendOperator("WOd", Index(1));
309309
} else {
310310
appendModule(mod->getSwiftModule());
311311
appendOperator("y");
312312
appendOperator("t");
313-
appendOperator("Wd", Index(mod->getCanTypeID(t)));
313+
appendOperator("WOd", Index(mod->getCanTypeID(t)));
314314
}
315315
return finalize();
316316
}
@@ -319,25 +319,25 @@ class IRGenMangler : public Mangle::ASTMangler {
319319
beginMangling();
320320
if (!t->hasArchetype()) {
321321
appendType(t);
322-
appendOperator("Wf", Index(1));
322+
appendOperator("WOf", Index(1));
323323
} else {
324324
appendModule(mod->getSwiftModule());
325325
appendOperator("y");
326326
appendOperator("t");
327-
appendOperator("Wf", Index(mod->getCanTypeID(t)));
327+
appendOperator("WOf", Index(mod->getCanTypeID(t)));
328328
}
329329
return finalize();
330330
}
331331
std::string mangleOutlinedDestroyFunction(const CanType t, IRGenModule *mod) {
332332
beginMangling();
333333
if (!t->hasArchetype()) {
334334
appendType(t);
335-
appendOperator("Wh", Index(1));
335+
appendOperator("WOh", Index(1));
336336
} else {
337337
appendModule(mod->getSwiftModule());
338338
appendOperator("y");
339339
appendOperator("t");
340-
appendOperator("Wh", Index(mod->getCanTypeID(t)));
340+
appendOperator("WOh", Index(mod->getCanTypeID(t)));
341341
}
342342
return finalize();
343343
}

test/Demangle/Inputs/manglings.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ _T03abc6testitySiFTm ---> merged abc.testit(Swift.Int) -> ()
282282
_T04main4TestCACSi1x_tc6_PRIV_Llfc ---> main.Test.(in _PRIV_).init(x: Swift.Int) -> main.Test
283283
_$S3abc6testityySiFTm ---> merged abc.testit(Swift.Int) -> ()
284284
_$S4main4TestC1xACSi_tc6_PRIV_Llfc ---> main.Test.(in _PRIV_).init(x: Swift.Int) -> main.Test
285-
_T0SqWy.17 ---> outlined copy of Swift.Optional with unmangled suffix ".17"
285+
_T0SqWOy.17 ---> outlined copy of Swift.Optional with unmangled suffix ".17"
286286
_T03nix6testitSaySiGyFTv_ ---> outlined variable #0 of nix.testit() -> [Swift.Int]
287287
_T03nix6testitSaySiGyFTv0_ ---> outlined variable #1 of nix.testit() -> [Swift.Int]
288288
_T0So11UITextFieldC4textSSSgvgToTepb_ ---> outlined bridged method (pb) of @objc __C.UITextField.text.getter : Swift.String?

test/IRGen/archetype_resilience.sil

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public enum EnumWithClassArchetypeAndDynamicSize<T : AnyObject> {
1717
}
1818

1919
// CHECK-LABEL: define swiftcc void @copyDynamicMultiEnum(%swift.type* %"EnumWithClassArchetypeAndDynamicSize<T>", %swift.type* %U, %T20archetype_resilience36EnumWithClassArchetypeAndDynamicSizeO* noalias nocapture swiftself)
20-
// CHECK: call %T20archetype_resilience36EnumWithClassArchetypeAndDynamicSizeO* @"$S20archetype_resilienceytWc2_"(%T20archetype_resilience36EnumWithClassArchetypeAndDynamicSizeO* %0, %T20archetype_resilience36EnumWithClassArchetypeAndDynamicSizeO* {{.*}}, %swift.type* %T, %swift.type* %"EnumWithClassArchetypeAndDynamicSize<T>")
20+
// CHECK: call %T20archetype_resilience36EnumWithClassArchetypeAndDynamicSizeO* @"$S20archetype_resilienceytWOc2_"(%T20archetype_resilience36EnumWithClassArchetypeAndDynamicSizeO* %0, %T20archetype_resilience36EnumWithClassArchetypeAndDynamicSizeO* {{.*}}, %swift.type* %T, %swift.type* %"EnumWithClassArchetypeAndDynamicSize<T>")
2121
// CHECK: ret void
2222
sil @copyDynamicMultiEnum : $@convention(method) <T, U where T: AnyObject> (@in_guaranteed EnumWithClassArchetypeAndDynamicSize<T>) -> () {
2323
bb0(%0 : $*EnumWithClassArchetypeAndDynamicSize<T>):

test/IRGen/big_types_corner_cases.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ let bigStructGlobalArray : [BigStruct] = [
4545
]
4646

4747
// CHECK-LABEL: define{{( protected)?}} internal swiftcc void @"$S22big_types_corner_cases21OptionalInoutFuncTypeC7executeyys5Error_pSgFyyXEfU_"(%T22big_types_corner_cases9BigStructVSg* nocapture dereferenceable({{.*}}), %T22big_types_corner_cases21OptionalInoutFuncTypeC*, %T22big_types_corner_cases9BigStructVSgs5Error_pSgIegcg_Sg* nocapture dereferenceable({{.*}})
48-
// CHECK: call void @"$S22big_types_corner_cases9BigStructVSgs5Error_pSgIegcg_SgWe
49-
// CHECK: call void @"$S22big_types_corner_cases9BigStructVSgs5Error_pSgIegcg_SgWy
48+
// CHECK: call void @"$S22big_types_corner_cases9BigStructVSgs5Error_pSgIegcg_SgWOe
49+
// CHECK: call void @"$S22big_types_corner_cases9BigStructVSgs5Error_pSgIegcg_SgWOy
5050
// CHECK: ret void
5151

5252
public func f1_returns_BigType(_ x: BigStruct) -> BigStruct {

test/IRGen/big_types_tests.sil

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public struct BigStruct {
2121

2222
// CHECK-LABEL: define{{( protected)?}} swiftcc void @testDestroyValue(%T15big_types_tests9BigStructV* noalias nocapture dereferenceable({{.*}}) #0 {
2323
// CHECK-NEXT: entry
24-
// CHECK-NEXT: call %T15big_types_tests9BigStructV* @"$S15big_types_tests9BigStructVWh0_"(%T15big_types_tests9BigStructV* %0)
24+
// CHECK-NEXT: call %T15big_types_tests9BigStructV* @"$S15big_types_tests9BigStructVWOh0_"(%T15big_types_tests9BigStructV* %0)
2525
// CHECK-NEXT: ret void
2626
sil @testDestroyValue : $@convention(thin) (@owned BigStruct) -> () {
2727
entry(%x : $BigStruct):

test/IRGen/enum_function.sil

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ bb0:
1616
// CHECK-32: define hidden swiftcc void @test1([[WORD:i32]], [[WORD]])
1717
sil hidden @test1 : $@convention(thin) (@owned Optional<() -> ()>) -> () {
1818
bb0(%0 : $Optional<() -> ()>):
19-
// CHECK: call void @"$SIey_SgWy"
19+
// CHECK: call void @"$SIey_SgWOy"
2020
retain_value %0 : $Optional<() -> ()>
2121

2222
// CHECK: icmp eq i64 %0, 0

test/IRGen/enum_resilience.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,5 +324,5 @@ private enum ProtGenEnumWithSize<T: Prot> {
324324
case c2(s2: Size)
325325
}
326326

327-
// CHECK-LABEL: define{{( protected)?}} internal %T15enum_resilience19ProtGenEnumWithSize33_59077B69D65A4A3BEE0C93708067D5F0LLO* @"$S15enum_resilienceytWh2_"(%T15enum_resilience19ProtGenEnumWithSize
327+
// CHECK-LABEL: define{{( protected)?}} internal %T15enum_resilience19ProtGenEnumWithSize33_59077B69D65A4A3BEE0C93708067D5F0LLO* @"$S15enum_resilienceytWOh2_"(%T15enum_resilience19ProtGenEnumWithSize
328328
// CHECK: ret %T15enum_resilience19ProtGenEnumWithSize33_59077B69D65A4A3BEE0C93708067D5F0LLO* %0

test/IRGen/enum_value_semantics.sil

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,9 @@ bb0(%0 : $SinglePayloadNontrivial):
180180
}
181181

182182
// CHECK-LABEL: define{{( protected)?}} swiftcc void @single_payload_nontrivial_copy_destroy(i64)
183-
// CHECK: call void @"$S20enum_value_semantics23SinglePayloadNontrivialOWy"
183+
// CHECK: call void @"$S20enum_value_semantics23SinglePayloadNontrivialOWOy"
184184
// CHECK-NEXT: call swiftcc void @single_payload_nontrivial_user
185-
// CHECK-NEXT: call void @"$S20enum_value_semantics23SinglePayloadNontrivialOWe"
185+
// CHECK-NEXT: call void @"$S20enum_value_semantics23SinglePayloadNontrivialOWOe"
186186
// CHECK-NEXT: ret void
187187

188188
//
@@ -446,7 +446,7 @@ bb0(%0 : $SinglePayloadNontrivial):
446446
// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds %T20enum_value_semantics22MultiPayloadNontrivialO, %T20enum_value_semantics22MultiPayloadNontrivialO* %0, i32 0, i32 1
447447
// CHECK-NEXT: [[TAG_ADDR:%.*]] = bitcast [1 x i8]* [[T0]] to i8*
448448
// CHECK-NEXT: [[TAG:%.*]] = load i8, i8* [[TAG_ADDR]], align 8
449-
// CHECK-NEXT: @"$S20enum_value_semantics22MultiPayloadNontrivialOWe"
449+
// CHECK-NEXT: @"$S20enum_value_semantics22MultiPayloadNontrivialOWOe"
450450
// CHECK-NEXT: ret void
451451

452452

@@ -487,7 +487,7 @@ bb0(%0 : $SinglePayloadNontrivial):
487487
// CHECK-NEXT: [[PAYLOAD_0:%.*]] = load i64, i64* [[PAYLOAD_0_ADDR]], align 8
488488
// CHECK-NEXT: [[PAYLOAD_1_ADDR:%.*]] = getelementptr
489489
// CHECK-NEXT: [[PAYLOAD_1:%.*]] = load i64, i64* [[PAYLOAD_1_ADDR]], align 8
490-
// CHECK: call void @"$S20enum_value_semantics31MultiPayloadNontrivialSpareBitsOWe"
490+
// CHECK: call void @"$S20enum_value_semantics31MultiPayloadNontrivialSpareBitsOWOe"
491491
// CHECK-NEXT: ret void
492492

493493

test/IRGen/enum_value_semantics_special_cases.sil

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,4 +195,4 @@ enum AllRefcountedTwoSimple {
195195
}
196196

197197
// CHECK-LABEL: define linkonce_odr hidden void @"$S34enum_value_semantics_special_cases22AllRefcountedTwoSimpleOwxx"
198-
// CHECK: call void @"$S34enum_value_semantics_special_cases22AllRefcountedTwoSimpleOWy"
198+
// CHECK: call void @"$S34enum_value_semantics_special_cases22AllRefcountedTwoSimpleOWOy"

test/IRGen/enum_value_semantics_special_cases_objc.sil

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,4 @@ enum AllMixedRefcountedTwoSimple {
5252
}
5353

5454
// CHECK-LABEL: define linkonce_odr hidden void @"$S39enum_value_semantics_special_cases_objc27AllMixedRefcountedTwoSimpleOwxx"
55-
// CHECK: call void @"$S39enum_value_semantics_special_cases_objc27AllMixedRefcountedTwoSimpleOWy"
55+
// CHECK: call void @"$S39enum_value_semantics_special_cases_objc27AllMixedRefcountedTwoSimpleOWOy"

test/IRGen/existentials.sil

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,19 +67,19 @@ entry(%w : $*@sil_weak CP?, %a : $CP?):
6767
// CHECK: [[DEST_WITNESS:%.*]] = load i8**, i8*** [[SRC_WITNESS_ADDR]]
6868
%c = load_weak %w : $*@sil_weak CP?
6969

70-
// CHECK: call { %swift.weak, i8** }* @"$S12existentials2CP_pSgXwWb0_"({ %swift.weak, i8** }* %0, { %swift.weak, i8** }* [[V]])
70+
// CHECK: call { %swift.weak, i8** }* @"$S12existentials2CP_pSgXwWOb0_"({ %swift.weak, i8** }* %0, { %swift.weak, i8** }* [[V]])
7171
copy_addr [take] %w to [initialization] %v : $*@sil_weak CP?
7272

73-
// CHECK: call { %swift.weak, i8** }* @"$S12existentials2CP_pSgXwWd0_"({ %swift.weak, i8** }* %0, { %swift.weak, i8** }* [[V]])
73+
// CHECK: call { %swift.weak, i8** }* @"$S12existentials2CP_pSgXwWOd0_"({ %swift.weak, i8** }* %0, { %swift.weak, i8** }* [[V]])
7474
copy_addr [take] %w to %v : $*@sil_weak CP?
7575

76-
// CHECK: call { %swift.weak, i8** }* @"$S12existentials2CP_pSgXwWc0_"({ %swift.weak, i8** }* %0, { %swift.weak, i8** }* [[V]])
76+
// CHECK: call { %swift.weak, i8** }* @"$S12existentials2CP_pSgXwWOc0_"({ %swift.weak, i8** }* %0, { %swift.weak, i8** }* [[V]])
7777
copy_addr %w to [initialization] %v : $*@sil_weak CP?
7878

79-
// CHECK: call { %swift.weak, i8** }* @"$S12existentials2CP_pSgXwWf0_"({ %swift.weak, i8** }* %0, { %swift.weak, i8** }* [[V]])
79+
// CHECK: call { %swift.weak, i8** }* @"$S12existentials2CP_pSgXwWOf0_"({ %swift.weak, i8** }* %0, { %swift.weak, i8** }* [[V]])
8080
copy_addr %w to %v : $*@sil_weak CP?
8181

82-
// CHECK: call { %swift.weak, i8** }* @"$S12existentials2CP_pSgXwWh0_"({ %swift.weak, i8** }* [[V]])
82+
// CHECK: call { %swift.weak, i8** }* @"$S12existentials2CP_pSgXwWOh0_"({ %swift.weak, i8** }* [[V]])
8383
destroy_addr %v : $*@sil_weak CP?
8484

8585
dealloc_stack %v : $*@sil_weak CP?

0 commit comments

Comments
 (0)