Apple departed from GCC mainly for licensing reasons. As GCC 4.2 isthe last version with uses GPLv2,> Apple is stuck with that one until Clang can completely replace GCC. BTW, LLVM-GCC is just a hack (a compiler that uses the GCC front-end and LLVM back-end) until Clang is stable enough. -alex
I am not on top of things regarding the why's, but being in full control of the tool chain is definitelysomething that motivated Apple to go forward w/ LLVM. For example, it was a complicated task to have compiler pluginsin gcc as LLVM has. R.Stallman resisted this new gcc feature for some time, it is now part of the gcc feature set. --Alex - Mtl
Afficher les réponses par date
On Tue, 2011-08-02 at 12:27 -0400, Alexandre Abreu wrote:
I am not on top of things regarding the why's, but being in full control of the tool chain is definitelysomething that motivated Apple to go forward w/ LLVM. For example, it was a complicated task to have compiler pluginsin gcc as LLVM has. R.Stallman resisted this new gcc feature for some time, it is now part of the gcc feature set.
Whether it's a coincidence or not, Apple engineers stopped contributing code to gcc when the license was changed to GPLv3. And even though I followed gcc development for about 10 years (but not so much any more), I wouldn't feel comfortable speculating about Apple's reasons for distancing themselves from current gcc development.
I recommend that people finding bugs, or just inefficiencies either in the code generated by LLVM or in LLVM's algorithms themselves, file bug reports with Apple. I've filed many bugzilla reports with the GCC developers based on my experiences using gcc to compile Gambit-generated C code; generally speaking, these problems have been fixed, and I believe fixing them improved the general quality of the compiler and led to smoother implementations of inter-procedural analysis and optimizations.
For example, when built with --enable-single-host, Gambit generates C files that have tens of thousands of virtual registers and basic blocks, thousands of computed goto targets, etc., which illuminated quite rapidly algorithms whose complexity was quadratic or worse. When the GCC developers replaced these with better algorithms, they were in a better position some years later when they implemented Link-Time-Optimization.
Brad