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

ki...@gmx.net changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ki...@gmx.net

--- Comment #4 from ki...@gmx.net ---
LDC ran into the same issue when moving to Phobos 2.074. I ended up switching
from individual druntime/Phobos object file compilation to all-D-files-at-once
compilation (like DMD), as that reduces the template instantiation culling [1].
See LDC PR [2].

This template culling, in combination with restructured Phobos, also leads to
sometimes dramatic performance decreases due to less inlining potential with
non-instantiated (culled) templates, rendering cross-module-inlining/LTO
essential for best performance. See this (lenghty but interesting) LDC issue
[3]. There's a link to a Weka.io-specific patch where they had to disable the
culling due to linker errors.

For LDC, I'm planning to allow the user to prevent template culling via a
command-line switch, as the current implementation doesn't seem very mature.

[1]:
https://github.com/dlang/dmd/blob/v2.075.0/src/ddmd/dtemplate.d#L7197-L7205
[2]: https://github.com/ldc-developers/ldc/pull/2076#issuecomment-315175464
[3]: https://github.com/ldc-developers/ldc/issues/2168

--

Reply via email to