1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 04:22:20 +02:00

Fixed int8[0] aggzero marker

This commit is contained in:
Brian Fiete 2021-02-24 13:52:04 -08:00
parent 25dce88509
commit 524d3993ab
2 changed files with 9 additions and 10 deletions

View file

@ -865,18 +865,18 @@ void BeIRCodeGen::Read(BeValue*& beValue)
} }
else if (valType != structType->mMembers[i].mType) else if (valType != structType->mMembers[i].mType)
{ {
if ((valType->IsSizedArray()) && (structType->mMembers[i].mType->IsSizedArray())) if (valType->IsSizedArray())
{ {
auto valSizedType = (BeSizedArrayType*)valType; auto valSizedType = (BeSizedArrayType*)valType;
auto memberSizedType = (BeSizedArrayType*)structType->mMembers[i].mType; if (valSizedType->mSize == 0)
if ((valSizedType->mSize == 0) && (valSizedType->mElementType == memberSizedType->mElementType))
{ {
constant->mType = memberSizedType; constant->mType = structType->mMembers[i].mType;
constStruct->mMemberValues.Add(constant); constStruct->mMemberValues.Add(constant);
continue; continue;
} }
} }
Fail("ConstAgg struct member type mismatch"); Fail("ConstAgg struct member type mismatch");
} }
} }

View file

@ -955,12 +955,11 @@ void BfIRCodeGen::Read(llvm::Value*& llvmValue, BfIRCodeGenEntry** codeGenEntry,
if (values[i]->getType() != structType->getElementType(i)) if (values[i]->getType() != structType->getElementType(i))
{ {
auto valArrayType = llvm::dyn_cast<llvm::ArrayType>(values[i]->getType()); auto valArrayType = llvm::dyn_cast<llvm::ArrayType>(values[i]->getType());
auto structArrayType = llvm::dyn_cast<llvm::ArrayType>(structType->getElementType(i)); if (valArrayType != NULL)
if ((valArrayType != NULL) && (structArrayType != NULL))
{ {
if ((valArrayType->getNumElements() == 0) && (valArrayType->getElementType() == structArrayType->getElementType())) if (valArrayType->getNumElements() == 0)
{ {
values[i] = llvm::ConstantAggregateZero::get(structArrayType); values[i] = llvm::ConstantAggregateZero::get(structType->getElementType(i));
} }
} }
} }