dmd codegen improvements

Vladimir Panteleev via Digitalmars-d digitalmars-d at puremagic.com
Tue Aug 18 05:37:35 PDT 2015


On Tuesday, 18 August 2015 at 10:45:49 UTC, Walter Bright wrote:
> So if you're comparing code generated by dmd/gdc/ldc, and 
> notice something that dmd could do better at (1, 2 or 3), 
> please let me know. Often this sort of thing is low hanging 
> fruit that is fairly easily inserted into the back end.

Hi,

 From my experience reducing regressions, I have noticed that 
backend changes in general have a very high chance of introducing 
code generation regressions. Codegen bugs are nasty: they are 
occasionally difficult to reduce, and since software is rarely 
tested with its "release" build, have a habit of sneaking into 
published releases of otherwise bug-free software.

IIRC, I have had three releases affected by optimization/inlining 
DMD bugs (two of Digger and one of RABCDAsm). These do not speak 
well for D when end-users ask me what the cause of the bug is, 
and I have to say "Yeah, it's a bug in the official D compiler".

I think stability of the DMD backend is a goal of much higher 
value than the performance of the code it emits. DMD is never 
going to match the code generation quality of LLVM and GCC, which 
have had many, many man-years invested in them. Working on DMD 
optimizations is essentially duplicating this work, and IMHO I 
think it's not only a waste of time, but harmful to D because of 
the risk of regressions.

I suggest that we revamp the compiler download page again. The 
lead should be a "select your compiler" which lists the 
advantages and disadvantages of each of DMD, LDC and GDC.



More information about the Digitalmars-d mailing list