On Wednesday, 7 February 2018 at 08:51:01 UTC, Kirr wrote:
https://issues.dlang.org/show_bug.cgi?id=16189
This is a P1 critical DMD bug, silently generating wrong code.
Reported one and a half year ago, but exists in DMD compilers
going back to DMD 2.050 (possibly more, but this is as far back
as I tried).
The repro is essentially C, it involves nothing but array,
struct and loop. No templates, CTFE, no phobos, no any fancy
features.
I can fully understand that may be this bug is hard to fix,
that there's not enough manpower, that there are other more
pressing issues, that no one can be expected to work on
something they are not interested in, etc. And may I'm the only
one affected? (it's a mystery to me). But this bug is a
phychological obstacle to my use of D (or rather DMD, because
LDC seems OK). May be it's just my expectation that is too high.
I'm not ready to give up arrays, structs or loops. I
experimentally worked around this once I found it, by
re-wording the loop. But I've no idea how to make sure this bug
won't hit me somewhere else. I guess I can live without
optimizer (or without DMD). In any case, I think that
miscompiling a simplest C-like loop does not send the right
message to a newcomer.
I'll appreciate any help with this bug.
Yeah that's... really bad. I suppose the saving grace is that
it's only a serious issue with the use of the optimiser, which I
don't tend to use on DMD, but this should really be prioritised.
I guess the fact that it's not a regression might make fixing it
harder, but it doesn't really matter.
Does it work with slightly varied examples like where a = -1, and
is incremented etc.?