User: Password:
Subscribe / Log in / New account

Re: Apple will use LLVM

From:  Adam Jackson <>
To:  Development discussions related to Fedora <>
Subject:  Re: Apple will use LLVM
Date:  Thu, 16 Feb 2012 10:02:05 -0500
Message-ID:  <1329404525.10028.29.camel@atropine>
Archive-link:  Article

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
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:

- ajax
devel mailing list

(Log in to post comments)

Copyright © 2012, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds