[LLVMdev] Preferring to use GCC instead of LLVM

Gordon Henriksen gordonhenriksen at mac.com
Tue May 13 08:14:05 PDT 2008


On May 13, 2008, at 08:57, Jon Harrop wrote:

> Ok. There are lots of issues here. As I understand it, LLVM aims to:

Jon, I'm not sure where you got this list, but I don't find it  
accurate at all…

> . Support Mac OS first, Linux second and Windows is not a priority.
> . Provide JIT compilation first and the ability to generate  
> standalone executables and DLLs second.
> . Provide fast compilation first and optimization second.

To my estimation:

- Windows is not a priority only to the extent that there are fewer  
Windows developers using the framework. The *aim* is to be portable,  
and in fact LLVM does work on Windows. The project files are  
frequently out of date, though (since most development is done on  
Unix), so a Windows developer might be more interested in sticking to  
packaged releases. For comparison, I don't think the Xcode project  
files can even be used to build the system. :)

- Both static and JIT compilation are first-class. The most frequent  
use of LLVM is probably in Apple's OpenGL stack (JITC) but the most  
significant driver of development is as the back-end for llvm-gcc and  
clang (static compilation). That said, JIT support is weaker than  
static compilation in some areas (exceptions, GC).

- Both speed of compilation and speed of generated code are  
priorities. This is a dimension of flexibility afforded entirely to  
the user of the framework, selected by which transformations and  
analyses they choose to run, and at what time. If anything, however, I  
would argue that the design is skewed toward more optimal output;  
LLVM's compile times are never likely to be competitive in a streaming  
"MB machine code/s" race with low-overhead JIT compilers. I say this  
because it uses a complex bitcode format and a fairly expensive IR  
representation (lots of malloc objects). Both of which are explicitly  
tailored to analysis and low-overhead transformation—not streaming  
compilation performance. Likewise, there's lots of malloc traffic in  
the code generator, which (like the IR representation) is a non- 
optional component.

So I can't agree with the conclusions you draw, except that maybe  
kr512 might be better served elsewhere :)).

— Gordon





More information about the llvm-dev mailing list