@@ -6346,10 +6346,12 @@ void irgen::emitAsyncReturn(IRGenFunction &IGF, AsyncContextLayout &asyncLayout,
6346
6346
if (combinedTy->isVoidTy ()) {
6347
6347
assert (result.empty () && " Unexpected result values" );
6348
6348
} else {
6349
+ Explosion native = nativeSchema.mapIntoNative (
6350
+ IGM, IGF, result, funcResultTypeInContext, /* isOutlined*/ false );
6349
6351
if (auto *structTy = dyn_cast<llvm::StructType>(combinedTy)) {
6350
6352
llvm::Value *nativeAgg = llvm::UndefValue::get (structTy);
6351
- for (unsigned i = 0 , e = result .size (); i < e; ++i) {
6352
- llvm::Value *elt = result .claimNext ();
6353
+ for (unsigned i = 0 , e = native .size (); i < e; ++i) {
6354
+ llvm::Value *elt = native .claimNext ();
6353
6355
auto *nativeTy = structTy->getElementType (i);
6354
6356
elt = convertForDirectError (IGF, elt, nativeTy,
6355
6357
/* forExtraction*/ false );
@@ -6360,9 +6362,9 @@ void irgen::emitAsyncReturn(IRGenFunction &IGF, AsyncContextLayout &asyncLayout,
6360
6362
while (!out.empty ()) {
6361
6363
nativeResultsStorage.push_back (out.claimNext ());
6362
6364
}
6363
- } else if (!result .empty ()) {
6365
+ } else if (!native .empty ()) {
6364
6366
auto *converted = convertForDirectError (
6365
- IGF, result .claimNext (), combinedTy, /* forExtraction*/ false );
6367
+ IGF, native .claimNext (), combinedTy, /* forExtraction*/ false );
6366
6368
nativeResultsStorage.push_back (converted);
6367
6369
} else {
6368
6370
nativeResultsStorage.push_back (llvm::UndefValue::get (combinedTy));
0 commit comments