On Thu, 2012-02-16 at 10:22 +0530, Rahul Sundaram wrote:
On 02/16/2012 10:08 AM, Genes MailLists wrote:
> Not to mention that the kernel devs use gcc to compile the kernel -
> and it most certainly puts a lot of pressure on the compiler. I suspect
> unless linus drops gcc as well, we'll at a minimum need to keep it to
> build the kernel itself.
Not quite. LLVM can be used to build the kernel and what Linus does
doesn't matter as much (kernel is important but only one component) as
showing that Fedora on the whole will actually benefit from moving to
LLVM. For that, LLVM has to so much better than GCC and someone has to
do the work within Fedora to show that it is the case.
Since I was a bit (intentionally) curt and dismissive in my other
response in this thread, I'll add some anecdata here. I have actually
tried building xserver with clang and running the standard set of
microbenchmarks. I found one relevant path where the clang build was
~15% faster [1]. Something like 60% of the rest were within ±3%. For
everything else clang was uniformly worse by usually about 5%.
This isn't especially surprising. Both llvm and gcc have a robust set
of high quality optimization passes. Changing compiler is in this sense
little different from changing CFLAGS. It's ricer-tuning at best. The
performance problems in Linux - in software in general - are almost
always algorithmic, and no compiler is going to magically fix broken
algorithms. I know it's tempting to look for silver bullets, but we've
pretty much run out of those. [2]
Also, LLVM doesn't support anything newer than DWARF3. I'm not thrilled
about the idea of generating worse code _and_ worse debugging info.
Particularly not if it means switching to a compiler written in a far
worse language, with far less tribal knowledge in the community I have
to interact with.
LLVM has a role to play. It's nicely lit a fire under gcc's ass about
plugins being a thing that we really have needed for the last 20+ years,
dammit. Maybe someday it'll prompt gcc into being usable as a JIT too.
It happens to be the code generation backend for a number of languages,
and it's an okay JIT which is pretty sweet for things like llvmpipe.
But from where I sit, trying to switch to llvm wholesale would make my
life measurably worse on every axis. I feel like even _cursory_
investigation into the question would have reached this conclusion, and
I kind of resent that it's considered remotely appropriate to suggest
HAY GUYS HAVE YOU HEARD ABOUT THIS NEW COMPILER without having done some
research and maybe gathering some data.
I expect better from a development list.
[1] - I should probably re-do this test and file a gcc bug.
[2] - Much as I hate linking to techcrunch:
http://techcrunch.com/2011/10/25/lead-bullets/
- ajax