diff gen/tollvm.cpp @ 1644:9176437d98be

Add -linkonce-templates for emitting linkonce_odr syms instead of weak_odr.
author Matti Niemenmaa <matti.niemenmaa+hg@iki.fi>
date Tue, 09 Mar 2010 23:07:08 +0200
parents d8e558087001
children 40bd4a0d4870
line wrap: on
line diff
--- a/gen/tollvm.cpp	Mon Mar 08 23:37:40 2010 -0700
+++ b/gen/tollvm.cpp	Tue Mar 09 23:07:08 2010 +0200
@@ -245,7 +245,7 @@
             return llvm::GlobalValue::AvailableExternallyLinkage;
         // template
         if (needsTemplateLinkage(sym))
-            return TEMPLATE_LINKAGE_TYPE;
+            return templateLinkage;
     }
     // function
     else if (FuncDeclaration* fdecl = sym->isFuncDeclaration())
@@ -263,12 +263,12 @@
             return llvm::GlobalValue::AvailableExternallyLinkage;
         // array operations are always template linkage
         if (fdecl->isArrayOp)
-            return TEMPLATE_LINKAGE_TYPE;
+            return templateLinkage;
         // template instances should have weak linkage
         // but only if there's a body, and it's not naked
         // otherwise we make it external
         else if (needsTemplateLinkage(fdecl) && fdecl->fbody && !fdecl->naked)
-            return TEMPLATE_LINKAGE_TYPE;
+            return templateLinkage;
         // extern(C) functions are always external
         else if (ft->linkage == LINKc)
             return llvm::GlobalValue::ExternalLinkage;
@@ -283,7 +283,7 @@
             return llvm::GlobalValue::AvailableExternallyLinkage;
         // template
         if (needsTemplateLinkage(cd))
-            return TEMPLATE_LINKAGE_TYPE;
+            return templateLinkage;
     }
     else
     {
@@ -334,7 +334,7 @@
     if (needsTemplateLinkage(sym)) {
         if (isAvailableExternally(sym) && mustDefineSymbol(sym))
             return llvm::GlobalValue::AvailableExternallyLinkage;
-        return TEMPLATE_LINKAGE_TYPE;
+        return templateLinkage;
     }
     else
         return llvm::GlobalValue::InternalLinkage;
@@ -345,7 +345,7 @@
     if (isAvailableExternally(sym) && mustDefineSymbol(sym))
         return llvm::GlobalValue::AvailableExternallyLinkage;
     if (needsTemplateLinkage(sym))
-        return TEMPLATE_LINKAGE_TYPE;
+        return templateLinkage;
     else
         return llvm::GlobalValue::ExternalLinkage;
 }