1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-09 12:02:21 +02:00

Fixed auto-ctor issue with splats

This commit is contained in:
Brian Fiete 2021-01-05 14:28:35 -08:00
parent 2fd58a38bb
commit 111631dd9c

View file

@ -16310,17 +16310,17 @@ void BfModule::EmitCtorBody(bool& skipBody)
BF_ASSERT(paramDef->mName == fieldInstance.GetFieldDef()->mName); BF_ASSERT(paramDef->mName == fieldInstance.GetFieldDef()->mName);
if (fieldInstance.mDataIdx < 0) if (fieldInstance.mDataIdx < 0)
continue; continue;
if (paramDef->mParamKind != BfParamKind_Normal)
continue;
auto localVar = mCurMethodState->mLocals[paramIdx + 1]; auto localVar = mCurMethodState->mLocals[paramIdx + 1];
BF_ASSERT(localVar->mName == paramDef->mName); BF_ASSERT(localVar->mName == paramDef->mName);
auto localVal = exprEvaluator.LoadLocal(localVar); auto localVal = exprEvaluator.LoadLocal(localVar);
localVal = LoadOrAggregateValue(localVal);
if (paramDef->mParamKind != BfParamKind_Normal)
continue;
auto thisVal = GetThis(); auto thisVal = GetThis();
auto fieldPtr = mBfIRBuilder->CreateInBoundsGEP(thisVal.mValue, 0, fieldInstance.mDataIdx); auto fieldPtr = mBfIRBuilder->CreateInBoundsGEP(thisVal.mValue, 0, fieldInstance.mDataIdx);
mBfIRBuilder->CreateAlignedStore(localVar->mValue, fieldPtr, localVar->mResolvedType->mAlign); mBfIRBuilder->CreateAlignedStore(localVal.mValue, fieldPtr, localVar->mResolvedType->mAlign);
MarkFieldInitialized(&fieldInstance); MarkFieldInitialized(&fieldInstance);
} }
} }