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

Argument cascades

This commit is contained in:
Brian Fiete 2021-01-02 08:11:07 -08:00
parent 0692fb44a4
commit 2dbcca8ca4
8 changed files with 98 additions and 8 deletions

View file

@ -13830,6 +13830,29 @@ void BfModule::CreateDIRetVal()
}
}
BfTypedValue BfModule::CreateTuple(const Array<BfTypedValue>& values, const Array<String>& fieldNames)
{
BfTypeVector fieldTypes;
for (auto arg : values)
fieldTypes.Add(arg.mType);
auto tupleType = CreateTupleType(fieldTypes, fieldNames);
auto tupleTypedValue = BfTypedValue(CreateAlloca(tupleType), tupleType, true);
for (int fieldIdx = 0; fieldIdx < tupleType->mFieldInstances.size(); fieldIdx++)
{
auto& fieldInstance = tupleType->mFieldInstances[fieldIdx];
if (fieldInstance.mDataIdx <= 0)
continue;
auto typedVal = values[fieldIdx];
typedVal = LoadOrAggregateValue(typedVal);
mBfIRBuilder->CreateAlignedStore(typedVal.mValue, mBfIRBuilder->CreateInBoundsGEP(tupleTypedValue.mValue, 0, fieldInstance.mDataIdx), typedVal.mType->mAlign);
}
return tupleTypedValue;
}
void BfModule::CheckVariableDef(BfLocalVariable* variableDef)
{
if (variableDef->mName.IsEmpty())