@@ -589,22 +589,12 @@ namespace {
589
589
AccessKind accessKind) && override {
590
590
assert (base.getType ().isExistentialType () &&
591
591
" base for open existential component must be an existential" );
592
- auto addr = SGF.B .createOpenExistentialAddr (
593
- loc, base.getLValueAddress (), getTypeOfRValue ().getAddressType (),
594
- getOpenedExistentialAccessFor (accessKind));
592
+ assert (base.getType ().isAddress () &&
593
+ " base value of open-existential component was not an address?" );
595
594
596
- if (base.hasCleanup ()) {
597
- assert (false && " I believe that we should never end up here. One, we "
598
- " assert above that base is an l-value address and we "
599
- " state l-values don't have associated cleanup. Two, we "
600
- " enter deinit of the buffer but don't have "
601
- " book-keeping for the value. Three, I believe that "
602
- " would mean to have a l-value passed at +1 which I "
603
- " don't believe we do." );
604
- // Leave a cleanup to deinit the existential container.
605
- SGF.enterDeinitExistentialCleanup (base.getValue (), CanType (),
606
- ExistentialRepresentation::Opaque);
607
- }
595
+ SILValue addr = SGF.B .createOpenExistentialAddr (
596
+ loc, base.getValue (), getTypeOfRValue ().getAddressType (),
597
+ getOpenedExistentialAccessFor (accessKind));
608
598
609
599
SGF.setArchetypeOpeningSite (cast<ArchetypeType>(getSubstFormalType ()),
610
600
addr);
@@ -1926,14 +1916,7 @@ LValue SILGenLValue::visitOpaqueValueExpr(OpaqueValueExpr *e,
1926
1916
openedExistentials.erase (known);
1927
1917
1928
1918
// Do formal evaluation of the underlying existential lvalue.
1929
- LValue existentialLV = visitRec (opened->getExistentialValue (), accessKind);
1930
-
1931
- ManagedValue existentialAddr
1932
- = SGF.emitAddressOfLValue (e, std::move (existentialLV), accessKind);
1933
-
1934
- // Open up the existential.
1935
- LValue lv;
1936
- lv.add <ValueComponent>(existentialAddr, None, existentialLV.getTypeData ());
1919
+ LValue lv = visitRec (opened->getExistentialValue (), accessKind);
1937
1920
lv.add <OpenOpaqueExistentialComponent>(
1938
1921
cast<ArchetypeType>(opened->getOpenedArchetype ()->getCanonicalType ()));
1939
1922
return lv;
0 commit comments