Maybe decline is the wrong term, llvm/clang did dent GCC near monopoly. Now GCC reacted promptly which is good.
The near-monopoly of GCC was leading to stagnation. Clang's competition seems to have reinvigorated the GCC project, which is a fantastic outcome for users: two great compiler teams riffing off one another's improvements, and we all benefit from their work.
I don't know how much is impression, but on my side I felt like GCC was a crumpling mammoth. clang forced them to improve and at the same time it showed that gcc is not near death at all.
Compilation times? I thought that compliling with GCC has always been faster than with clang, at least in the general case.
For C++ in my experience clang is much faster, especially for plain (unoptimized) builds.
That has reversed in the last few releases of clang for my codebase.
Because gcc got faster or because clang got slower?
Because clang got a LOT slower and GCC got a bit faster. clang used to be incredibly fast and used little memory consumption, but recent versions have seen the compiler regress in both areas. On the other hand clang does a lot more now than it used to so it's somewhat justified.
My own experience with a substantial codebase (1+ million lines of code) is MSVC uses the least amount of RAM, followed by clang and then GCC. For performance in terms of compiling/linking it's GCC/clang tied and then MSVC from fastest to slowest.
MSVC would be really great if MSFT could solve their small file io overhead and enabled a mode where I could disable file modification notifications completely. Right now doing any compilation makes the anti viruses go completely crazy.
Add the workspace folder as an exclusion to your AV.
On corporate machines you dont know how many things are subscribing to file notifications.
Re:GCC 8.2 Released
by ndesaulniers on Thursday July 26, 2018 @11:39AM
(#17618304)
It would be nice to have choice on which compiler to use for the kernel. We're actively working on it.
GCC has caught up a lot with clang in the last few years, from the quality of error messages, to standard compliance, compilation times, tooling, sanitizers, etc.
IME GCC tends to produce faster code in practice, even if clang is often able to out-smart GCC in many areas (e.g., IIRC heap elision was first introduced in clang). GCC has a huge amount of inertia behind it, it's still the only compiler officially supported for compiling the Linux kernel, and, as long as the GCC developers don't stop improving it, it will be difficult for clang to take its role as "default" compiler, at least in Linux environments.
I use them both daily and I am really happy that we have the possibility of freely choosing between two such amazing projects. It would be a step backwards if one of them ended up fading away.