dmd codegen improvements

Iain Buclaw via Digitalmars-d digitalmars-d at puremagic.com
Wed Aug 19 09:53:21 PDT 2015


On 18 August 2015 at 12:45, Walter Bright via Digitalmars-d <
digitalmars-d at puremagic.com> wrote:

> Martin ran some benchmarks recently that showed that ddmd compiled with
> dmd was about 30% slower than when compiled with gdc/ldc. This seems to be
> fairly typical.
>
> I'm interested in ways to reduce that gap.
>
> There are 3 broad kinds of optimizations that compilers do:
>
> 1. source translations like rewriting x*2 into x<<1, and function inlining
>
> 2. instruction selection patterns like should one generate:
>
>     SETC AL
>     MOVZ EAX,AL
>
> or:
>     SBB EAX
>     NEG EAX
>
> 3. data flow analysis optimizations like constant propagation, dead code
> elimination, register allocation, loop invariants, etc.
>
> Modern compilers (including dmd) do all three.
>
> 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.
>
> For example, recently I improved the usage of the SETcc instructions.
>
> https://github.com/D-Programming-Language/dmd/pull/4901
> https://github.com/D-Programming-Language/dmd/pull/4904
>
> A while back I improved usage of BT instructions, the way switch
> statements were implemented, and fixed integer divide by a constant with
> multiply by its reciprocal.
>

You didn't fix integer divide on all targets?

https://issues.dlang.org/show_bug.cgi?id=14936

(Consider this my contribution to your low hanging fruit)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20150819/aa946e2d/attachment-0001.html>


More information about the Digitalmars-d mailing list