Work on ARM backend for DMD started

Walter Bright via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Tue Jul 4 17:42:38 PDT 2017


On 7/4/2017 4:09 PM, Johan Engelen wrote:
> On Tuesday, 4 July 2017 at 21:10:45 UTC, Walter Bright wrote:
>> The backend has also been accused of not doing data flow analysis. It does as 
>> good a flow analysis as any compiler.
> 
> Please...
> DMD: https://goo.gl/wHTPzz
> GDC & LDC: https://godbolt.org/g/QFSgaX

With this PR:

   https://github.com/dlang/dmd/pull/6968

The code:

   int basicfunc(int i) {
     return i;
   }

   int dataflow(int b) {
     int ret;

     if (b==4)
       ret = 3;
     else
       ret = 5;

     if (ret == 4)
       return 0;
     else
       return 1;
   }

Produces on Win32:

   _D5test49basicfuncFiZi  comdat
                 ret   // this is not a bug, as `i` is passed in EAX

   _D5test48dataflowFiZi   comdat
                 mov     EAX,1
                 ret

I'm sure you can find a case where LLVM does a better job. But I think I've made 
the point :-)


More information about the Digitalmars-d-announce mailing list