The dmd source code in template.c: ------------------------------------------------------- void TemplateDeclaration::semantic(Scope *sc) { [...] if (Module *m = sc->module) // should use getModule() instead? { // Generate these functions as they may be used // when template is instantiated in other modules // even if assertions or bounds checking are disabled in this module m->toModuleArray(); m->toModuleAssert(); <============= m->toModuleUnittest(); } --------------------------------------------------- This results in huge numbers of assert() functions to be generated, each with its own copy of the source file name string. The assert() function is generated as a COMDAT, which removes duplicates, but the filename strings are not put in COMDATs and are duplicated innumerable times.
(In reply to Walter Bright from comment #0) > The dmd source code in template.c: I see that this code block has been removed in https://github.com/dlang/dmd/pull/4858/files#diff-0477a1d81a6a920c99362954179c59c8L5915 . Is this still an issue? Is there a simple way to reproduce the problem?