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

Fixed issue with valueless ref params

This commit is contained in:
Brian Fiete 2020-08-11 13:52:57 -07:00
parent b53089a3e4
commit 6d65d8d11d
2 changed files with 6 additions and 0 deletions

View file

@ -3074,6 +3074,11 @@ BfTypedValue BfExprEvaluator::LoadLocal(BfLocalVariable* varDecl, bool allowRef)
localResult = BfTypedValue(varDecl->mAddr, varDecl->mResolvedType, BfTypedValueKind_SplatHead); localResult = BfTypedValue(varDecl->mAddr, varDecl->mResolvedType, BfTypedValueKind_SplatHead);
else if (!varDecl->mResolvedType->IsValuelessType()) else if (!varDecl->mResolvedType->IsValuelessType())
localResult = BfTypedValue(varDecl->mValue, varDecl->mResolvedType, BfTypedValueKind_SplatHead); localResult = BfTypedValue(varDecl->mValue, varDecl->mResolvedType, BfTypedValueKind_SplatHead);
else if ((varDecl->mResolvedType->IsRef()) && (!allowRef))
{
BF_ASSERT(varDecl->mResolvedType->IsValuelessType());
localResult = BfTypedValue(varDecl->mValue, varDecl->mResolvedType->GetUnderlyingType());
}
else else
localResult = BfTypedValue(varDecl->mValue, varDecl->mResolvedType); localResult = BfTypedValue(varDecl->mValue, varDecl->mResolvedType);
//BF_ASSERT(varDecl->mValue.IsArg()); //BF_ASSERT(varDecl->mValue.IsArg());

View file

@ -15887,6 +15887,7 @@ void BfModule::ProcessMethod_SetupParams(BfMethodInstance* methodInstance, BfTyp
paramVar->mIsSplat = true; // Treat skipped (valueless) as a splat paramVar->mIsSplat = true; // Treat skipped (valueless) as a splat
paramVar->mValue = mBfIRBuilder->GetFakeVal(); paramVar->mValue = mBfIRBuilder->GetFakeVal();
} }
paramVar->mIsLowered = resolvedType->GetLoweredType(BfTypeUsage_Parameter, &loweredTypeCode, &loweredTypeCode2) != BfTypeCode_None; paramVar->mIsLowered = resolvedType->GetLoweredType(BfTypeUsage_Parameter, &loweredTypeCode, &loweredTypeCode2) != BfTypeCode_None;
paramVar->mIsStruct = resolvedType->IsComposite() && !resolvedType->IsTypedPrimitive(); paramVar->mIsStruct = resolvedType->IsComposite() && !resolvedType->IsTypedPrimitive();
paramVar->mParamIdx = paramIdx; paramVar->mParamIdx = paramIdx;