Skip to content

Commit d829614

Browse files
committed
Fix SILGen of AnyHashableErasureExpr when opaque values are enabled
1 parent f387076 commit d829614

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

lib/SILGen/SILGenExpr.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1941,11 +1941,14 @@ RValue RValueEmitter::visitAnyHashableErasureExpr(AnyHashableErasureExpr *E,
19411941
SGFContext C) {
19421942
// Emit the source value into a temporary.
19431943
auto sourceOrigType = AbstractionPattern::getOpaque();
1944+
auto subExpr = E->getSubExpr();
1945+
auto &sourceOrigTL = SGF.getTypeLowering(sourceOrigType, subExpr->getType());
19441946
auto source =
1945-
SGF.emitMaterializedRValueAsOrig(E->getSubExpr(), sourceOrigType);
1947+
SGF.silConv.useLoweredAddresses()
1948+
? SGF.emitMaterializedRValueAsOrig(subExpr, sourceOrigType)
1949+
: SGF.emitRValueAsOrig(subExpr, sourceOrigType, sourceOrigTL, C);
19461950

1947-
return SGF.emitAnyHashableErasure(E, source,
1948-
E->getSubExpr()->getType(),
1951+
return SGF.emitAnyHashableErasure(E, source, subExpr->getType(),
19491952
E->getConformance(), C);
19501953
}
19511954

0 commit comments

Comments
 (0)