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