From 3509d659eadc7b5ad26cd04c92666c2e8d1886b7 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Mon, 18 May 2020 09:59:59 -0700 Subject: [PATCH] Fix for sized array initializer with global variables --- IDEHelper/Backend/BeIRCodeGen.cpp | 9 ++++++++- IDEHelper/Compiler/BfExprEvaluator.cpp | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/IDEHelper/Backend/BeIRCodeGen.cpp b/IDEHelper/Backend/BeIRCodeGen.cpp index 98f8011b..edbf581f 100644 --- a/IDEHelper/Backend/BeIRCodeGen.cpp +++ b/IDEHelper/Backend/BeIRCodeGen.cpp @@ -720,7 +720,14 @@ void BeIRCodeGen::Read(BeValue*& beValue) auto constStruct = mBeModule->mOwnedValues.Alloc(); constStruct->mType = type; for (auto val : values) - constStruct->mMemberValues.push_back(BeValueDynCast(val)); + { + BeConstant* constant = BeValueDynCast(val); + constStruct->mMemberValues.push_back(constant); +#ifdef _DEBUG + auto memberType = constant->GetType(); + BF_ASSERT(memberType == arrayType->mElementType); +#endif + } beValue = constStruct; BE_MEM_END("ParamType_Const_Array"); return; diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index ef0897ff..1ba4a6eb 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -15590,9 +15590,10 @@ void BfExprEvaluator::InitializedSizedArray(BfSizedArrayType* arrayType, BfToken // For now, we can't properly create const-valued non-size-aligned composites if (checkArrayType->mElementType->NeedsExplicitAlignment()) isAllConst = false; - if (!elementValue.mValue.IsConst()) isAllConst = false; + if (elementValue.IsAddr()) + isAllConst = false; InitValue initValue; initValue.mValue = elementValue;