Mercurial > projects > ldc
diff gen/classes.cpp @ 149:4c577c2b7229 trunk
[svn r155] Fixed a bunch of linkage problems (especially with templates)
author | lindquist |
---|---|
date | Mon, 24 Mar 2008 19:43:02 +0100 |
parents | 0636f6269dfd |
children | 7f92f477ff53 |
line wrap: on
line diff
--- a/gen/classes.cpp Sat Mar 22 12:20:32 2008 +0100 +++ b/gen/classes.cpp Mon Mar 24 19:43:02 2008 +0100 @@ -350,7 +350,7 @@ needs_definition = true; } - llvm::GlobalValue::LinkageTypes _linkage = llvm::GlobalValue::ExternalLinkage; + llvm::GlobalValue::LinkageTypes _linkage = DtoLinkage(cd); // interfaces have no static initializer // same goes for abstract classes @@ -1201,7 +1201,7 @@ const llvm::Type* st = cinfo->type->llvmType->get(); - cd->irStruct->classInfo = new llvm::GlobalVariable(st, true, llvm::GlobalValue::ExternalLinkage, NULL, gname, gIR->module); + cd->irStruct->classInfo = new llvm::GlobalVariable(st, true, DtoLinkage(cd), NULL, gname, gIR->module); } static llvm::Constant* build_offti_entry(VarDeclaration* vd) @@ -1275,7 +1275,8 @@ std::string name(cd->type->vtinfo->toChars()); name.append("__OffsetTypeInfos"); - llvm::GlobalVariable* gvar = new llvm::GlobalVariable(arrTy,true,llvm::GlobalValue::InternalLinkage,arrInit,name,gIR->module); + + llvm::GlobalVariable* gvar = new llvm::GlobalVariable(arrTy,true,DtoInternalLinkage(cd),arrInit,name,gIR->module); ptr = llvm::ConstantExpr::getBitCast(gvar, getPtrToType(sTy)); } else { @@ -1307,7 +1308,7 @@ gname.append(cd->mangle()); gname.append("12__destructorMFZv"); - llvm::Function* func = new llvm::Function(fnTy, llvm::GlobalValue::InternalLinkage, gname, gIR->module); + llvm::Function* func = new llvm::Function(fnTy, DtoInternalLinkage(cd), gname, gIR->module); llvm::Value* thisptr = func->arg_begin(); thisptr->setName("this");