https://issues.dlang.org/show_bug.cgi?id=10133

--- Comment #7 from [email protected] ---
Commit pushed to master at https://github.com/D-Programming-Language/dmd

https://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.

--

Reply via email to