Gdc D2 with GCC 4.3.4 sees light
D
I’ve been working with ldc for a long time. I enjoyed it, i helped the development with tickets and hacking ldc a bit. I even tried to compile Tango as shared library but i got an error, probably caused by the compiler since people reported that in gdc they were able to do it. I then started guessing if llvm is so stable as it seems and if it can substitute the gnu compiler collection. Then i came to these llvm vs gcc benchmarks. Well the result is that llvm is not so fast and reliable as promised. In the same days, a message posted on the D newsgroup got me. I started thinking that resurrection gdc is the only way to make a stable and reliable compiler accepted in the FOSS community for the D programming language. But it should resurrect it should implement the D2 specs: there are no other compilers than dmd which support D2 around. So, me and Michael joined to the challenge to work on gdc 😀
We got the lastest working branch of gdc, the one who relies on gcc 4.3.1. We then copied in our repository in bitbucket and applied some changes, after two days of works, gdc for D2.014 worked under gcc 4.3.4 (there were some problems in the default version when compiling the Phobos library). As a proof that it works look at it 😀
goshawk@earth:/tmp/test/usr/local/gcc-4.3/bin$ ./gdc ~/test.d
goshawk@earth:/tmp/test/usr/local/gcc-4.3/bin$ ./a.out
Hello World, Reloaded
goshawk@earth:/tmp/test/usr/local/gcc-4.3/bin$ ./gdc -v
Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: ../configure –prefix=/usr/local/gcc-4.3 –enable-languages=c,d,c++ –disable-multilib –disable-shared
Thread model: posix
gcc version 4.3.4 (GCC)
Nice, isn’t it?
Now while Michael is focusing in fixing the D1 part, i started merging the lastest dmd D2 compiler in gdc. Making a diff against dmd2.014 and gdc2.014 i’m applying all the necessary patches in gdc for D2 2.032.
We opened a dedicated IRC channel in irc.freenode.net #d.gdc. Feel free to join!
You can find full instructions in how to compile gdc in our wiki page.
Any help, documentation, word on this challenge is appreciated. See you soon 😀
4 Comments
I was quite excited to read about this. I downloaded the stuff, installed m4, gmp, and mpfr, then attempted the build. There was an error right at the end of the make:
../../gcc/d/d-codegen.cc: In member function ‘tree_node* IRState::getFrameForSymbol(Dsymbol*)’:
../../gcc/d/d-codegen.cc:2619: error: ‘STATIC_CHAIN_EXPR’ was not declared in this scope
The shell script executed before this had complained that there was no patch.
What do I do to get round this?
What version of gcc are you using?
I really appreciate your work 😉
Your latest GDC version from trunk works like a charm!
big thanks!