Comment #7 by github-bugzilla — 2014-08-22T05:03:32Z
Commit pushed to master at https://github.com/D-Programming-Language/dmdhttps://github.com/D-Programming-Language/dmd/commit/9202b529b329ce0087ae976aa8bf1deadd1b62de
Distinguish speculative instantiation from gagged one to elide unnecessary symbol emission
Template constraint evaluation may instantiate exactly same symbols multiple times (eg. issue 10133 test case in test/runnable/funclit.d).
It would cause linker error "duplicate COMDAT" in Win64. To avoid the issue, dmd should elide unnecessary symbol emission.
If a template is instantiated in template constraint or static condition, it's marked as speculative instantiation.
If no other code at non-speculative context refer the instance, compiler will elide its code generation.