diff --git a/gen/toir.cpp b/gen/toir.cpp index bb8950a7..4fa886df 100644 --- a/gen/toir.cpp +++ b/gen/toir.cpp @@ -128,7 +128,6 @@ DValue* VarExp::toElem(IRState* p) // take care of forward references of global variables if (vd->isDataseg() || (vd->storage_class & STCextern)) { vd->toObjFile(0); // TODO: multiobj - DtoConstInitGlobal(vd); } if (!vd->ir.isSet() || !vd->ir.getIrValue() || DtoType(vd->type)->isAbstract()) { error("global variable %s not resolved", vd->toChars()); @@ -136,6 +135,9 @@ DValue* VarExp::toElem(IRState* p) Logger::cout() << "unresolved global had type: " << *DtoType(vd->type) << '\n'; fatal(); } + if (vd->isDataseg() || (vd->storage_class & STCextern)) { + DtoConstInitGlobal(vd); + } return new DVarValue(type, vd, vd->ir.getIrValue()); } }