I have a large named enum (currently 645 members) of IRC event
types. It's big by neccessity[1].
I'm using dub, and both dmd and ldc successfully build it in test
and debug modes, but choke and die on plain and release. I
bisected it down to when I did a big addition to the enum to
encompass virtually all event types there are.
dmd -v:
[...]
code common
function kameloso.common.Separator.__xopEquals
function kameloso.common.Separator.__xtoHash
function kameloso.common.Settings.__xopEquals
function kameloso.common.Settings.__xtoHash
function kameloso.common.scopeguard
function kameloso.common.scopeguard.scopeString
function kameloso.common.scopeguard.entryString
function kameloso.common.KamelosoLogger.this
function kameloso.common.KamelosoLogger.writeLogMsg
function kameloso.common.KamelosoLogger.beginLogMsg
function kameloso.common.KamelosoLogger.logMsgPart
function kameloso.common.KamelosoLogger.finishLogMsg
zsh: segmentation fault (core dumped) dmd -c -v -w -d
-version=Have_kameloso -Isource/ source/arsd/dom.d
Where it stops here varies if I comment stuff out, so I don't
think the Logger is at fault.
ldc -v:
[...]
code irc
code constants
code connection
code config
code common
/usr/lib/libLLVM-5.0.so(_ZN4llvm3sys15PrintStackTraceERNS_11raw_ostreamE+0x2b)[0x7f09953839bb]
/usr/lib/libLLVM-5.0.so(_ZN4llvm3sys17RunSignalHandlersEv+0x56)[0x7f0995381806]
/usr/lib/libLLVM-5.0.so(+0x808953)[0x7f0995381953]
/usr/lib/libpthread.so.0(+0x11da0)[0x7f099496cda0]
ldc(_ZN16TemplateInstance12needsCodegenEv+0x8)[0x561fe42fc128]
ldc(_ZN16TemplateInstance12needsCodegenEv+0x103)[0x561fe42fc223]
ldc(_ZN16TemplateInstance12needsCodegenEv+0x103)[0x561fe42fc223]
ldc(_ZN16TemplateInstance12needsCodegenEv+0x103)[0x561fe42fc223]
ldc(_ZN16TemplateInstance12needsCodegenEv+0x103)[0x561fe42fc223]
ldc(_ZN16TemplateInstance12needsCodegenEv+0x103)[0x561fe42fc223]
ldc(_ZN16TemplateInstance12needsCodegenEv+0x103)[0x561fe42fc223]
[...]
zsh: segmentation fault (core dumped) ldc -v -w -d -oq
-od=.dub/obj -d-version=Have_kameloso -Isource/
What can I do? Merely copying the enum into a test file and
compiling with an empty main does nothing, it doesn't seem to be
enough to replicate the bug.
(Arch/Manjaro 64-bit, dmd 2.077.0, ldc 1.5.0 based on 2.075.1)
[1] http://defs.ircdocs.horse/defs/numerics.html