[Issue 15831] IFTI voldemort type exploding bloat

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Sun Jul 3 02:33:38 PDT 2016


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

--- Comment #7 from Rainer Schuetze <r.sagitario at gmx.de> ---
https://github.com/dlang/dmd/pull/5855 yields these symbols:

_D13testexpansion__T1sTiZ1 at FiZ6Result3fooMFNaNfZv
_D13testexpansion__T1sTS0 at __T1@TiZ1 at FiZ6ResultZ1@F%0Z2 at 3fooMFNaNfZv
_D13testexpansion__T1sTS0 at __T1@TS0 at __T1@TiZ1 at FiZ6ResultZ1@F%1Z2 at Z1@F%0Z2 at 3fooMFNaNfZv
_D13testexpansion__T1sTS0 at __T1@TS0 at __T1@TS0 at __T1@TiZ1 at FiZ6ResultZ1@F%2Z2 at Z1@F%1Z2 at Z1@F%0Z2 at 3fooMFNaNfZv
_D13testexpansion__T1sTS0 at __T1@TS0 at __T1@TS0 at __T1@TS0 at __T1@TiZ1 at FiZ6ResultZ1@F%3Z
2 at Z1@F%2Z2 at Z1@F%1Z2 at Z1@F%0Z2 at 3fooMFNaNfZv

This is a bit longer than the binary compression, but should be about the same
when base64 encoding is applied to the latter. Please also note that the
encoding has strictly linear size, while the binary compression is limited to a
constant factor by maximum encodable match length and dictionary size.

Starting with a recursion depth of 16, compiling for win64 crashes the compiler
(issue 16229)
Starting with a recursion depth of 19, the current compiler also bails out with

testexpansion.d(6): Error: function testexpansion.s!(Result).s excessive length
66394404789887526 for symbol, possible recursive expansion?

Compilation of the example for win32 with recursion depth 18 takes 3.1 seconds
with the current mangling, but is hardly measurable with the mangling in PR
5855.

--


More information about the Digitalmars-d-bugs mailing list