diff --git a/IDEHelper/Backend/BeMCContext.cpp b/IDEHelper/Backend/BeMCContext.cpp index e67e5047..7dace457 100644 --- a/IDEHelper/Backend/BeMCContext.cpp +++ b/IDEHelper/Backend/BeMCContext.cpp @@ -15742,7 +15742,7 @@ void BeMCContext::Generate(BeFunction* function) mDbgPreferredRegs[32] = X64Reg_R8;*/ //mDbgPreferredRegs[8] = X64Reg_RAX; - //mDebugging = (function->mName == "?__BfCtor@SpriteBatchRenderer@Repo@bf@@QEAAXTint@@@Z"); + //mDebugging = (function->mName == "DoCallback"); // || (function->mName == "?MethodA@TestProgram@BeefTest@bf@@CAXXZ"); // || (function->mName == "?Hey@Blurg@bf@@SAXXZ") // ; @@ -16903,7 +16903,7 @@ void BeMCContext::Generate(BeFunction* function) BF_ASSERT(retVal.IsVReg()); auto vregInfo = GetVRegInfo(retVal); - vregInfo->SetRetVal(); + vregInfo->SetRetVal(); } else if (retType->IsVector()) { @@ -16930,6 +16930,19 @@ void BeMCContext::Generate(BeFunction* function) } } + if (mBeFunction->HasStructRet()) + { + for (int vregIdx = 0; vregIdx < (int)mVRegInfo.size(); vregIdx++) + { + auto vregInfo = mVRegInfo[vregIdx]; + if (vregInfo->mIsRetVal) + { + AllocInst(BeMCInstKind_Mov, BeMCOperand::FromReg(X64Reg_RAX), BeMCOperand::FromVReg(vregIdx)); + break; + } + } + } + auto mcInst = AllocInst(); mcInst->mKind = BeMCInstKind_Ret; retCount++;