Visual D Build + DMD Bugginess = Bad

Sönke Ludwig ludwig at informatik.uni-luebeck.de
Thu Oct 14 00:34:06 PDT 2010


Am 13.10.2010 21:45, schrieb dsimcha:
> I've noticed that, when passed multiple files at once, DMD is generally buggy
> in ways that I can't reproduce in small test cases.  This includes things like
> magically ignoring __gshared variables, and not being able to convert a type
> to an alias to the same type, for example, not being able to convert a size_t
> to a uint on 32-bit, or not being able to convert a float[] to an R where R is
> a template parameter instantiated as float[].
>
> I have two questions:
>
> 1.  Has anyone experienced similar things and if so are they further along
> than me at creating decent test cases?
>
> 2.  I'm used to using Code::Blocks, but want to switch to Visual D because it
> seems to work a lot better for the most part.  However, by default it seems to
> pass all project files to the compiler at once, where Code::Blocks compiles
> one file at a time.  This means I have to deal with DMD's bugginess when
> passed mutliple files at once.  Does anyone know how to make Visual D work
> Code::Blocks style, i.e. compile each file to an object file and link them
> afterwords?

Right now, I'm in exactly the same situation. However, the problems 
might be a bit more obvious: Sometimes symbols are missing at link time 
that should not and sometimes some symbols (most of the time phobos 
symbols) are defined twice but with exactly the same module path.

(Error: multiple definition of conv_208_199f: 
_D53C:\D\dmd2\windows\bin\..\..\src\phobos\std\conv.d.52012__ModuleInfoZ 
and conv: 
_D53C:\D\dmd2\windows\bin\..\..\src\phobos\std\conv.d.52012__ModuleInfoZ)

On Mac OS, using all-at-once compilation I get defective .lib files (the 
ar tool complains that the .o file is smaller than it reports or 
something similar) so I have to compile the code of all static libs 
together with the application code.

The problem is that it is really difficult (almost impossible) to 
isolate the problem in any way because sometimes appears erratically and 
the code base is quite large. And also I cannot share the source code 
for debugging.


More information about the Digitalmars-d mailing list