Robert Clipsham wrote:
Hi all,
I took the liberty of running dmd through clang's static analysis, and
it's turned up quite a few (486) potential bugs in dmd:
http://octarineparrot.com/assets/dmd/
There's bound to be a few false positives in there (please feel free to
report them to the nice folk over at llvm), and the dead code won't
cause any problems (and most of the "dead code" in the backend is
probably in use with dmc or something), but there are still a few
hundred potential crashes in there.
The link above is rather slow - if anyone wants a local copy to work
with let me know and I'll see about getting one to you... The compressed
source to those pages is ~206MB, it's about 2.8GB without compression!
Here's a clang bug:
http://octarineparrot.com/assets/dmd/report-vtxpYt.html#EndPath
3436 if (!exp)
<9> Taking false branch
3437 fd->nrvo_can = 0;
3438
3439 if (exp)
<10> Taking false branch
3440 {
That is, (!exp) is false, and (exp) is also false.