If it's everything thats 'wrong with free software' then there's obviously nothing wrong with free software, you need to power-up your anti-gpl-fsf trolling.
On the other hand as mentioned in the 'article' Qualcomm which seems to be the company interested in getting clang/llvm building Linux is ARM based and perhaps Clang/LLVM has an upper hand on ARM optimization against GCC, I have never benchmarked on that architecture so I don't know. Still I doubt think there's much of a performance boost to be had on the kernel from a compiler standpoint, that said it's always a guess until you see actual numbers.
Clang is a superior compiler frontend. Whether or not LLVM is a superior backend (by "speed benchmark" standards it is not, yet; there are other reasons one might prefer it, however), Clang is faster to compile, tends to provide better diagnostics (GCC did some catching up after being slapped in the face with how awful its diagnostics were, but Clang isn't sitting still), Clang MUCH easier to extend and improve, has fantastic analysis tools, and has been explicitly built to be reused as a higher-level tool aside from simply compiling code into assembler.
GCC has tons of cruft and is difficult to work with; this has led to a general problem gaining new contributors, a slow exodus of existing developers (especially to Clang, which is more or less feature comparable but friendlier to work on), and requires lots of expert knowledge to even make a simple bug fix (as opposed to Clang, where even a total newbie can jump in and start doing pretty interesting things pretty quickly).
Part of this is a very explicit difference in design. GCC is an integrated whole that is not intended to be separable at all. Very very explicitly, in fact, and not for _any_ technical reason: it was because RMS was afraid that if the GCC frontend and GCC backend were usable independently, then evil vile horrible proprietary companies might use one or the other with a proprietary tool. Clang, on the other hand, was designed with full knowledge of the fact that the absolute least important thing that a compiler frontend can be used for in this day and age is the actual compilation. All the real action -- all the work that saves developers times and makes them enjoy their job -- takes place in higher level development tools, which require deep language integration. Given the huge complexity of C++, very few such tools have been developed, and most of them are quite flawed. (Visual Assist X generally is considered the best of such tools, and as a frequent user, I can attest to how often it screws up and pissed me off; compare to modern Java or C# environments where the tools are more or less perfect.) Clang allows more such tools to be written (particularly, FOSS tools, which do not currently compete favorably with their proprietary rivals) and allows them to have an excellent understanding of the language -- the exact same understanding of the language as the compiler itself, in fact.
Being able to compile the code is thus secondary to Clang's real strength. It's still important, however, since there are some features Clang enables that GCC frowns upon (easy injection of user-specified code in the appropriate places for application-specific instrumentation, for example), and additionally because you can't be sure your frontend actually works 100% correctly if you aren't using it to generate working code (since the only way to know that your model of the code is correct is to run the code's test cases, which require it to be compiled).
Also, LLVM is possibly going to be faster than GCC in the future. Given the rate of change between the two projects, it's quite likely that'll happen, assuming LLVM development doesn't start to drastically slow down or GCC drastically speed up. While it's true there aren't a lot of low-hanging fruit left for LLVM in terms of performance, there's still a lot of opportunities for it to match and then pull ahead of GCC, and it's simply easier to write those optimization for LLVM's framework than it is to write them for GCC's. That is, again, very valuable if you're a compiler developer.
There's also features that LLVM itself provides that GCC does not. LLVM has a JIT mode, which has been used for some very interesting things (like a massively updated and more complete CINT). LLVM has a very interesting IR model, which has allowed for projects like Portable NaCl which would otherwise be incredibly difficult to pull off. I'm unsure what if any benefits there are for kernel developers, but there are certainly a good number of them for userspace developers.
The key goal of Clang is to support tools like fully accurate code completion, large-scale invasive automatic refactoring support, highly detailed static analysis, semantic and structural analysis for automatic documentation/binding generation, user customizable instrumentation and code morphing, and so on. Being able to use even just one of those tools when developing the kernel makes it entirely worth ensuring that Clang/LLVM are capable of fully and correctly parsing (and then compiling) the kernel source code.
Completely correct, that *any* GPL is banned on Apple market.
But remember, you don't need to opensource *ANYTHING* you build with GCC. This is sad, but it is fair and true.
The real reason is quite simple - GCC is built and licensed from ground up in a way to prevent closing itself, or parts of it, or its extensions down.
Apple can easily use some closed source LLVM extension to build its own parts, and you will be required to purchase it and be dependent on it.
This can be easily proven by two facts:
1) first, newer project (LLVM) NOT using *any* GPL and instead picking up BSD license.
BSD license is proven to be prioritized over GPL for single reason: BSD promotes closed source software.
2) second, the name choosen is NOT "GCC" or anything related to "GCC". Compare to "Mplayer" and its fork "mplayer2".
Still, I am not aware of any LLVM proprietary extension, placed in strategically vital position. So, there is no need for GPL-based LLVM fork.
This assumption is correct. They ARE evil and vile.
Forking is quite normal, due to inability for *any* system define *perfect* build-up from ground up without starting.
Those who question will look like idiots for a minute till answer. Those who not, will stay idiots forever.
Modularity leads to deficiency in performance, one thing is faster than two+, even perfectly optimized multicores never achieve 100% performance of single core.
Still, with size comes complexity and with complexity call for modularity.
Regarding "GPL zealots", they fight for the freedom, so they are many times better than "Proprietary Sluts" such as yourself.
2) the important word is "fork". mplayer2 is a fork of mplayer. LLVM does not reuse GCC code, nor any other GCC asset, so why on earth would it reuse the name? The name chosen is not icc either...
Ok so let's say there is a proprietary extension in LLVM, two cases:
- open source developers can write the same thing. They write it, and continue to use LLVM. It costs them the same amount of work than if the project was GPLed.
- open source devs cannot write the same thing. They don't, and they still couldn't have written it if the project was GPLed. Still the same situation as if the project was GPLed.
The key aspect is that closed source components written to block other actors are never open sourced. Corporations in that position prefer to rewrite/buy elsewhere the whole thing anyway than make such sacrifices.