Mercurial > projects > ldc
diff gen/toobj.cpp @ 163:a8cd9bc1021a trunk
[svn r179] lots and lots of fixes, much more of tango now compiles/works.
author | lindquist |
---|---|
date | Mon, 05 May 2008 07:36:29 +0200 |
parents | 5c17f81fc1c1 |
children | db9890b3fb64 |
line wrap: on
line diff
--- a/gen/toobj.cpp Mon May 05 00:56:53 2008 +0200 +++ b/gen/toobj.cpp Mon May 05 07:36:29 2008 +0200 @@ -324,7 +324,8 @@ std::string m_name("_D"); m_name.append(m->mangle()); m_name.append("8__ModuleZ"); - llvm::GlobalVariable* m_gvar = new llvm::GlobalVariable(moduleinfoTy, false, llvm::GlobalValue::ExternalLinkage, NULL, m_name, gIR->module); + llvm::GlobalVariable* m_gvar = gIR->module->getGlobalVariable(m_name); + if (!m_gvar) m_gvar = new llvm::GlobalVariable(moduleinfoTy, false, llvm::GlobalValue::ExternalLinkage, NULL, m_name, gIR->module); importInits.push_back(m_gvar); } } @@ -336,7 +337,8 @@ std::string m_name("_D"); m_name.append(mangle()); m_name.append("9__importsZ"); - llvm::GlobalVariable* m_gvar = new llvm::GlobalVariable(importArrTy, true, llvm::GlobalValue::InternalLinkage, c, m_name, gIR->module); + llvm::GlobalVariable* m_gvar = gIR->module->getGlobalVariable(m_name); + if (!m_gvar) m_gvar = new llvm::GlobalVariable(importArrTy, true, llvm::GlobalValue::InternalLinkage, c, m_name, gIR->module); c = llvm::ConstantExpr::getBitCast(m_gvar, getPtrToType(importArrTy->getElementType())); c = DtoConstSlice(DtoConstSize_t(importInits.size()), c); } @@ -539,6 +541,8 @@ llvm::GlobalVariable* gvar = new llvm::GlobalVariable(_type,_isconst,_linkage,NULL,_name,gIR->module); gIR->irDsymbol[this].irGlobal->value = gvar; + Logger::cout() << *gvar << '\n'; + if (static_local) DtoConstInitGlobal(this); else