From b7650a7ae633e5c4f29a44b647d08db011641581 Mon Sep 17 00:00:00 2001 From: Tomas Lindquist Olsen Date: Wed, 3 Oct 2007 06:14:41 +0200 Subject: [PATCH] [svn r21] * Fixed local instances of imported templates --- gen/toobj.c | 7 ++++++- lib/llvmdcore.bc | Bin 3968 -> 0 bytes lib/lphobos.bc | Bin 1300 -> 0 bytes test/imports2.d | 4 +++- 4 files changed, 9 insertions(+), 2 deletions(-) delete mode 100644 lib/llvmdcore.bc delete mode 100644 lib/lphobos.bc diff --git a/gen/toobj.c b/gen/toobj.c index 061b5361..b4661feb 100644 --- a/gen/toobj.c +++ b/gen/toobj.c @@ -630,7 +630,7 @@ void FuncDeclaration::toObjFile() const llvm::FunctionType* functype = llvm::cast(llvmValue->getType()->getContainedType(0)); // only members of the current module maybe be defined - if (getModule() == gIR->dmodule) + if (getModule() == gIR->dmodule || parent->isTemplateInstance()) { llvmDModule = gIR->dmodule; @@ -730,5 +730,10 @@ void FuncDeclaration::toObjFile() gIR->funcdecls.pop_back(); } + + // template instances should have weak linkage + if (parent->isTemplateInstance()) { + func->setLinkage(llvm::GlobalValue::WeakLinkage); + } } } diff --git a/lib/llvmdcore.bc b/lib/llvmdcore.bc deleted file mode 100644 index af91b1549575e1655d0ee6e0ad0403d07136b205..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3968 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 Yiu^Rwz%`hbJ|H?;h~fL0@xYM$3&wbX2LJ#7 diff --git a/test/imports2.d b/test/imports2.d index 678a5ded..ee271d21 100644 --- a/test/imports2.d +++ b/test/imports2.d @@ -1,6 +1,8 @@ -module test; +module imports2; import std.stdio; void main() { writefln("Hello world!"[]); + print(42); + printf("\n"); }