Mercurial > projects > ldc
comparison 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 |
comparison
equal
deleted
inserted
replaced
162:1856c62af24b | 163:a8cd9bc1021a |
---|---|
322 else { // declare | 322 else { // declare |
323 // create name | 323 // create name |
324 std::string m_name("_D"); | 324 std::string m_name("_D"); |
325 m_name.append(m->mangle()); | 325 m_name.append(m->mangle()); |
326 m_name.append("8__ModuleZ"); | 326 m_name.append("8__ModuleZ"); |
327 llvm::GlobalVariable* m_gvar = new llvm::GlobalVariable(moduleinfoTy, false, llvm::GlobalValue::ExternalLinkage, NULL, m_name, gIR->module); | 327 llvm::GlobalVariable* m_gvar = gIR->module->getGlobalVariable(m_name); |
328 if (!m_gvar) m_gvar = new llvm::GlobalVariable(moduleinfoTy, false, llvm::GlobalValue::ExternalLinkage, NULL, m_name, gIR->module); | |
328 importInits.push_back(m_gvar); | 329 importInits.push_back(m_gvar); |
329 } | 330 } |
330 } | 331 } |
331 // has import array? | 332 // has import array? |
332 if (!importInits.empty()) | 333 if (!importInits.empty()) |
334 const llvm::ArrayType* importArrTy = llvm::ArrayType::get(getPtrToType(moduleinfoTy), importInits.size()); | 335 const llvm::ArrayType* importArrTy = llvm::ArrayType::get(getPtrToType(moduleinfoTy), importInits.size()); |
335 c = llvm::ConstantArray::get(importArrTy, importInits); | 336 c = llvm::ConstantArray::get(importArrTy, importInits); |
336 std::string m_name("_D"); | 337 std::string m_name("_D"); |
337 m_name.append(mangle()); | 338 m_name.append(mangle()); |
338 m_name.append("9__importsZ"); | 339 m_name.append("9__importsZ"); |
339 llvm::GlobalVariable* m_gvar = new llvm::GlobalVariable(importArrTy, true, llvm::GlobalValue::InternalLinkage, c, m_name, gIR->module); | 340 llvm::GlobalVariable* m_gvar = gIR->module->getGlobalVariable(m_name); |
341 if (!m_gvar) m_gvar = new llvm::GlobalVariable(importArrTy, true, llvm::GlobalValue::InternalLinkage, c, m_name, gIR->module); | |
340 c = llvm::ConstantExpr::getBitCast(m_gvar, getPtrToType(importArrTy->getElementType())); | 342 c = llvm::ConstantExpr::getBitCast(m_gvar, getPtrToType(importArrTy->getElementType())); |
341 c = DtoConstSlice(DtoConstSize_t(importInits.size()), c); | 343 c = DtoConstSlice(DtoConstSize_t(importInits.size()), c); |
342 } | 344 } |
343 else | 345 else |
344 c = gIR->irDsymbol[moduleinfo].irStruct->constInit->getOperand(3); | 346 c = gIR->irDsymbol[moduleinfo].irStruct->constInit->getOperand(3); |
537 std::string _name(mangle()); | 539 std::string _name(mangle()); |
538 | 540 |
539 llvm::GlobalVariable* gvar = new llvm::GlobalVariable(_type,_isconst,_linkage,NULL,_name,gIR->module); | 541 llvm::GlobalVariable* gvar = new llvm::GlobalVariable(_type,_isconst,_linkage,NULL,_name,gIR->module); |
540 gIR->irDsymbol[this].irGlobal->value = gvar; | 542 gIR->irDsymbol[this].irGlobal->value = gvar; |
541 | 543 |
544 Logger::cout() << *gvar << '\n'; | |
545 | |
542 if (static_local) | 546 if (static_local) |
543 DtoConstInitGlobal(this); | 547 DtoConstInitGlobal(this); |
544 else | 548 else |
545 gIR->constInitList.push_back(this); | 549 gIR->constInitList.push_back(this); |
546 } | 550 } |