LLVM Status Update

Ok, the last status update (http://mail.cs.uiuc.edu/pipermail/llvmdev/2003-June/000416.html)
was over 7 weeks ago, sorry about that. We've been really busy squishing
bugs, improving stability, and otherwise improving the system for the
release. Here are some of the major accomplishments in LLVM since the
last update...

1. We finally have the go-ahead from the university to release LLVM under
   the Illinois Open Source License (The University of Illinois/NCSA Open Source License (NCSA) | Open Source Initiative),
   which is an OSI approved license similar in spirit to the BSD license.
   This is good for us, because now the barriers to the release are purely
   technical, not political. :slight_smile: :slight_smile:

2. John has LLVM completely autoconfiscated, which makes the system
   dramatically easier to set up and use! He and Dinakar also wrapped up
   the "Projects" system, which allows loosely connected LLVM projects to
   be built outside of the LLVM tree, while making use of all of the
   makefile machinery we already have.

3. Brian finished up the static compiler (LLC) backend for the X86, and it
   works great. Misha has the Sparc JIT working, which means that both
   the Sparc and X86 backends work in both JIT and Static configurations
   now! Misha also added nightly tester support for the Sparc, so we can
   track its progress as well.

4. Vikram found and fixed a bunch of bugs in the Sparc backend, which
   makes it work a lot better on SPECINT2000!

5. Brian wrote a new Name Mangler interface which allows all of the
   back-ends to share a single common implementation, eliminating a bunch
   of redundant code!

6. Chris checked in a couple of improvements to the target-independent
   portions of the JIT, which sped it up by about 25% overall.

7. Large chunks of the X86 backend are now automatically generated from a
   TableGen description file,

8. Misha added a mode to bugpoint to automatically debug buggy code
   generators. It supports both the static and JIT compilers.

9. The Data Structure Analysis implementation is now greatly improved and
   more efficient than before, and now has a "GraphChecker" pass which
   allows us to write nice regression tests for it.

10. Improvements in the C frontend and in the Sparc backend now make LLVM
    work a lot better with standard configure scripts (./configure CC=llvmgcc)

11. Minor improvements:
    - LOTS of minor bugs fixed
    - The C Backend now supports the invoke instruction
    - Misha wrote Emacs and VIM syntax highlighting modes for TableGen files
    - Substantial improvements to the instcombine and reassociation passes
    - New DEBUG_TYPE macro: http://mail.cs.uiuc.edu/pipermail/llvmdev/2003-August/000439.html
    - The -trace[m] runtime has been improved

12. Lots of house cleaning and restructuring are happening to the LLVM
    sourcebase and build system as we prepare for the big release. LLVM
    now compiles with GCC 3.3.

Although a lot of progress is being made, it looks like we may have to
slip the 1.0 release until the middle or end of september (~1 month), to
get the infrastructure for bug-tracking and regression testing up to
speed, as well as perform more testing. We want this to be the most solid
1.0 release possible. :slight_smile:

That said, if you don't already have a copy of LLVM, and would like one,
we can probably provide you with a prerelease. Just get in touch with
Vikram and myself off list (we don't want the slip to stop anyone from
using LLVM, we just want the final official release to be as useful as

If you have any questions or comments, feel free to email the llvmdev list
or me directly depending on what it is. Have fun LLVMing!