diff dmd/template.c @ 948:780530d1cad3

Revert templates to old behavior. While emitting a template instantiation only once is good for compile times and binary sizes, it doesn't work with linkonce linkage as inlined function bodies could be discarded. Since we don't want to inhibit inlining, templates are reverted to the previous behavior, where an instantiation is emitted for each module using it. In the future, a custom inlining pass may allow us to switch back to common/weak linkage and reenable smart template instance emission.
author Christian Kamm <kamm incasoftware de>
date Sun, 08 Feb 2009 21:44:46 +0100
parents 1714836f2c0b
children 7ce8355fbcc6
line wrap: on
line diff
--- a/dmd/template.c	Sun Feb 08 18:51:32 2009 +0100
+++ b/dmd/template.c	Sun Feb 08 21:44:46 2009 +0100
@@ -2873,7 +2873,10 @@
     this->havetempdecl = 0;
     this->isnested = NULL;
     this->errors = 0;
+
+    // LDC
     this->tinst = NULL;
+    this->tmodule = NULL;
 }
 
 /*****************
@@ -2988,6 +2991,7 @@
 	tmodule = tinst->tmodule;
     else
 	tmodule = sc->module;
+    //printf("%s in %s\n", toChars(), tmodule->toChars());
 
 #if LOG
     printf("\tdo semantic\n");