LLVM can now be considered a real compiler: it can compile and run itself.
This is a pretty big accomplishment, because LLVM makes "nontrivial" use
of lots of C++ features.
If you'd like to play around with this, grab the 1.1 release (due out
soon), build a set of native tools, and put the native tool directory into
Then checkout another copy of the LLVM source tree, and do the following:
$ ./configure CC=`which llvmgcc` CXX=`which llvmg++` <any other flags you normally use>
$ make tools
After waiting a while, you should get a fully populated tools/Debug
directory with all of the LLVM bytecode files for the LLVM tools.
I only did some simple touch testing of the resulting bytecode files, but
ll-llvm-as, ll-llvm-dis, ll-llvm-nm, and ll-llc (with the X86 backend) all
seem to work, and the build process uses ll-tblgen & ll-burg which are
compiled as part of the process (so they also work). ll-lli is unlikely
to work, because LLVM doesn't currently support __builtin_return_address,
but this will be addressed in the future.