From a944aa6d2404632435bd5c4437221fe33111245d Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Wed, 14 Oct 2020 17:37:25 -0700 Subject: [PATCH] Fix for undef index of sized array --- IDEHelper/Compiler/BfExprEvaluator.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index 04ea408f..f77841f4 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -17949,7 +17949,7 @@ void BfExprEvaluator::Visit(BfIndexerExpression* indexerExpr) mModule->MakeAddressable(target); mModule->PopulateType(underlyingType); - if (sizedArrayType->IsUnknownSizedArray()) + if ((sizedArrayType->IsUnknownSizedArray()) || (isUndefIndex)) { mResult = mModule->GetDefaultTypedValue(underlyingType, false, BfDefaultValueKind_Addr); } @@ -17968,11 +17968,6 @@ void BfExprEvaluator::Visit(BfIndexerExpression* indexerExpr) { if (target.mType->IsSizeAligned()) { -// auto ptrType = mModule->CreatePointerType(underlyingType); -// auto ptrValue = mModule->mBfIRBuilder->CreateBitCast(target.mValue, mModule->mBfIRBuilder->MapType(ptrType)); -// auto gepResult = mModule->mBfIRBuilder->CreateInBoundsGEP(ptrValue, indexArgument.mValue); -// mResult = BfTypedValue(gepResult, underlyingType, target.IsReadOnly() ? BfTypedValueKind_ReadOnlyAddr : BfTypedValueKind_Addr); - auto gepResult = mModule->mBfIRBuilder->CreateInBoundsGEP(target.mValue, mModule->GetConstValue(0), indexArgument.mValue); mResult = BfTypedValue(gepResult, underlyingType, target.IsReadOnly() ? BfTypedValueKind_ReadOnlyAddr : BfTypedValueKind_Addr); }