diff --git a/IDEHelper/Backend/BeIRCodeGen.cpp b/IDEHelper/Backend/BeIRCodeGen.cpp index 884244e5..e6b14d68 100644 --- a/IDEHelper/Backend/BeIRCodeGen.cpp +++ b/IDEHelper/Backend/BeIRCodeGen.cpp @@ -690,6 +690,8 @@ void BeIRCodeGen::Read(BeValue*& beValue) CMD_PARAM(BeConstant*, initializer); CMD_PARAM(String, name); CMD_PARAM(bool, isTLS); + + BF_ASSERT(varType != NULL); auto globalVariable = mBeModule->mGlobalVariables.Alloc(); globalVariable->mModule = mBeModule; @@ -1907,7 +1909,9 @@ void BeIRCodeGen::HandleNextCmd() CMD_PARAM(StringT<256>, name); CMD_PARAM(bool, isTLS); CMD_PARAM(BeConstant*, initializer); - + + BF_ASSERT(varType != NULL); + auto globalVariable = mBeModule->mGlobalVariables.Alloc(); globalVariable->mModule = mBeModule; globalVariable->mType = varType; diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index eb6a4b11..9a7bc70a 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -13725,7 +13725,10 @@ BfTypedValue BfModule::ReferenceStaticField(BfFieldInstance* fieldInstance) auto globalVar = (BfGlobalVar*)mBfIRBuilder->GetConstant(globalValue); if ((globalVar->mStreamId == -1) && (!mBfIRBuilder->mIgnoreWrites)) + { + mBfIRBuilder->MapType(fieldInstance->mResolvedType); mBfIRBuilder->CreateGlobalVariable(globalValue); + } } else {