Contact Us

Use the form on the right to contact us.


123 Street Avenue, City Town, 99999

(123) 555-6789


You can set your address, phone number, email and site description in the settings tab.
Link to read me page with more information.


LLVM-GCC and Clang

Mark Thomas

At the WWDC, Apple talked about LLVM-GCC and Clang.  LLVM-GCC takes front end components of GCC such as the language parsers and builds LLVM platform independent intermediate language (similar to JVM bytecode).  LLVM can then provide link-time optimisations, JIT compilation, dynamic code generation for this IL.  Backends exist for emitting code for a number of processor architectures as well as MSIL. Clang is an Apple led project to create a new C, C++, Objective C and Objective C++ front-end for the LLVM compiler, essentially removing the need for LLVM-GCC.  It's an interesting move by Apple that leaves them free to better integrate a compiler into Xcode without some of the restrictions imposed by the GPL.  For a technical comparison with other compilers including GCC see here:

At first glance, LLVM is an interesting technology that seems to provide a more modular solution compared with compiling to JVM bytecodes or MISIL, allowing a language implementer to take advantage of the LLVM IL optimisations and runtime environment if they want to.  There is an LLVM sub-project called vmkit, which is working towards binary translation from Java bytecode and MSIL to LLVM IL, it'll be interesting to see how it performs compared with Sun's Hotspot VM which they have tuned over many years, some pre-Java.

Apple are targeting speed improvements and a reduced install footprint for Snow Leopard (OS X 10.6).  It seems that LLVM-GCC and maybe Clang are driving some of these improvements.  Apple are claiming around a 33% performance improvement when compiling code with LLVM-GCC compared with just GCC, and by shipping LLVM-IL applications rather than fat apps containing x86 and PPC versions they could reduce the install footprint.

This is very cool: Apple are using LLVM as part of the OpenGL stack in Leopard