@@ -6346,10 +6346,12 @@ void irgen::emitAsyncReturn(IRGenFunction &IGF, AsyncContextLayout &asyncLayout,
63466346 if (combinedTy->isVoidTy ()) {
63476347 assert (result.empty () && " Unexpected result values" );
63486348 } else {
6349+ Explosion native = nativeSchema.mapIntoNative (
6350+ IGM, IGF, result, funcResultTypeInContext, /* isOutlined*/ false );
63496351 if (auto *structTy = dyn_cast<llvm::StructType>(combinedTy)) {
63506352 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 ();
63536355 auto *nativeTy = structTy->getElementType (i);
63546356 elt = convertForDirectError (IGF, elt, nativeTy,
63556357 /* forExtraction*/ false );
@@ -6360,9 +6362,9 @@ void irgen::emitAsyncReturn(IRGenFunction &IGF, AsyncContextLayout &asyncLayout,
63606362 while (!out.empty ()) {
63616363 nativeResultsStorage.push_back (out.claimNext ());
63626364 }
6363- } else if (!result .empty ()) {
6365+ } else if (!native .empty ()) {
63646366 auto *converted = convertForDirectError (
6365- IGF, result .claimNext (), combinedTy, /* forExtraction*/ false );
6367+ IGF, native .claimNext (), combinedTy, /* forExtraction*/ false );
63666368 nativeResultsStorage.push_back (converted);
63676369 } else {
63686370 nativeResultsStorage.push_back (llvm::UndefValue::get (combinedTy));
0 commit comments