If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

Intel Ivy Bridge: GCC 4.8 vs. LLVM/Clang 3.2 SVN

Phoronix: Intel Ivy Bridge: GCC 4.8 vs. LLVM/Clang 3.2 SVN

Kicking off the Linux benchmarks this weekend are some early numbers from the GCC 4.8 and LLVM/Clang 3.2 development compilers when running on Intel's latest-generation Core i7 "Ivy Bridge" processor. GCC 4.8 and LLVM/Clang 3.2 are still months away from being formally released, but this article provides a glimpse at how the open-source compiler battle is panning out.

Good to see GCC still has a lot of fight left in it. So much so that it almost makes Apple look pretty silly for starting LLVM/Clang. LLVM/Clang still doesn't compile a LOT of apps and on top of that still doesn't beat GCC in performance most of the time on the apps that it does compile.

So the only thing LLVM/Clang has going for it right now is the more user-friendly compiler errors and warnings? Hard to imagine LLVM/Clang ever being a true replacement for GCC, at least not for several more years.

Good to see GCC still has a lot of fight left in it. So much so that it almost makes Apple look pretty silly for starting LLVM/Clang. LLVM/Clang still doesn't compile a LOT of apps and on top of that still doesn't beat GCC in performance most of the time on the apps that it does compile.

So the only thing LLVM/Clang has going for it right now is the more user-friendly compiler errors and warnings? Hard to imagine LLVM/Clang ever being a true replacement for GCC, at least not for several more years.

OMG, GCC fanboy much? In case you didn't know: Competition is a good thing. Btw GCC and LLVM are tools. Use them for your advantage.

Clang is welcome to compete, but I don't know if it'll ever catch up. Apple is so focused on form over function that they'd rather have beautiful, prosaic compiler warnings/errors, like "Hello, John. That is a very clever piece of code you have written, but unfortunately it violates the C99 standard, because it ...".

Right now, Clang may have faster compile times, but that's because it doesn't optimize things nearly as well as gcc. It gets absolutely slaughtered on binary size and the thing that matters the most; performance. Who cares if it takes a long time to compile? Build servers are usually high-end multi-core multi-cpu servers anyway.

Right now, Clang may have faster compile times, but that's because it doesn't optimize things nearly as well as gcc. It gets absolutely slaughtered on binary size and the thing that matters the most; performance. Who cares if it takes a long time to compile? Build servers are usually high-end multi-core multi-cpu servers anyway.

Thanks for that information. It would have been nice to include a benchmark of compilation time into the article itself to give a broader perspective...

1) A year ago Clang/LLVM was nowhere close to competing with GCC. Now it not only is caught up on some benchmarks, but actually ahead on others. And yet some doofuses want to make claims like "it will never catch up." Currently behind, yes, but it's improving at a much faster rate than GCC does.

2) GCC's internals suck. Even many of the people who work on GCC agree that it sucks. Companies like Facebook and Google are moving to Clang because GCC costs them far more money to develop with, even if they do perhaps use GCC for release mode compiles.

3) Clang has tool support. GCC does not, and probably never will, _by design_. This is what the doofuses never seem to understand. Nobody really gives a crap if LLVM compiles code that runs faster. Really, it doesn't matter. What does matter is that you can write high-quality analysis tools, refactoring tools, IDEs, etc. with Clang. You cannot write them with GCC, because GCC goes out of its way to stop people from doing it. You can completely remove the actual ability to output machine code from Clang and it would still be one of the most important projects around for C++ developers.

4) The only areas that you see very large differences in performance between Clang and GCC are in OpenMP bound tests. That will be fixed, and when the feature lands, most of the gaps will shrink. There will no longer be massive crazy differences in performances on any benchmark for people to point out and sensationalize. Apps that don't use OpenMP (e.g., most of them) likewise don't see huge gaps in performance between GCC and Clang. Again, GCC may lead on most (but apparently not all) tests, but only by small margins that really just don't matter.

5) Clang offers significantly better error diagnostics. Yes, this matters. Calling it "form over function" is absolutely ridiculous -- the diagnostics _are the freaking function_ in a developer tool, for ****'s sake. I compile a release mode version of an application a few times per release. I develop, test, and debug code thousands of times per release. If I were forced to choose only one compiler, I'm going to choose the one that saves me massive amounts of time during development rather than the one that has a 5% speed boost, and I'll take all the money saved in my time and just buy a faster CPU. (Of course, in time, it won't be a trade-off anymore, as per point 1.) To say that "performance matters most" is just flat out preposterous and wrong: even as a AAA game developer, it really just isn't that big of a difference to care. (Granted, we can do dev in the intelligent compiler and then compile in release mode in the optimizing compiler. Having both is good!) We care about shaving off engineer time, cutting hundreds of thousands of dollars from costs. We do not care about the minimum specs being "6 year old computer" instead of "6.3 year old computer."

6) Clang and LLVM both are essential to the current Linux graphics stack. Anyone posting on a site like Phoronix and insulting Clang or LLVM is a very sad, confused individual. Unless you don't want optimized shaders, efficient software rendering, and OpenCL support, I guess.

Clang/LLVM is developed at a ridiculously rapid pace by developers from a wide range of companies (not just Apple), and a very significant portion of the professionals who actually use compilers in advanced scenarios (rather than cluelessly debating them on forums and occasionally compiling something) are migrating from GCC to Clang. Probably a reason for that. Probably at least 6 of them. Of course GCC is not irrelevant today, and is not going to be irrelevant any time soon, but to doubt that Clang is becoming more and more relevant is just silly. It will be some time before it supplants GCC on Linux, if it ever does, but frankly who cares? "Is default compiler on Linux distros" is about as important as "is default desktop background."