[llvm-announce] LLVM Status Update

Chris Lattner sabre at nondot.org
Tue Nov 18 09:15:58 PST 2003

Hey everyone,

It's been way too long since the last status update.  Since that last
edition, we've gone through the 1.0 release, fixed a ton of bugs, and
implemented some neat new things.  Since many people are using the 1.0
release, I'll break the changes into "before 1.0" and "after 1.0"

Before 1.0:

1. We've cleaned up the source base quite a bit, speeding up several
   different LLVM components and otherwise cleaning up messy code.
   Everyone worked on this, but Misha and Brian made huge contributions.

2. Several C++ EH related bug fixes went into the C++ frontend.

3. Opaque type resolution has been reimplemented.  It's now simpler and
   fixes problems linking a large number of programs.

4. We fixed the remaining problems preventing the C codes in SPECCPU 2000
   from working.

5. Misha improved the JIT to incrementally load bytecode files from the
   disk as functions are needed.  This reduces startup time as well as
   memory footprint.

6. John updated the QMTest test expectations to match what we expect to
   fail on either X86 or Sparc.  Now all failures are really unknown
   problems.  :)

7. Brian wrote the 'llvm-nm' utility!  Documentation here:

8. Completely rewrote how def-use chains are implemented, so that all
   operations on them take constant time.  No interface changes were

9. John wrote the testing guide, updated the projects guide, and otherwise
   worked on improving the documentation for the release.

10. We switched over to a different implementation of the variable
   argument handling stuff, allowing more SSA-like operations.

11. LLVM now supports weak linkage, though not 'external weak' linkage

12. The X86 backend now generates many instructions that it didn't before
   (like inc, neg, etc).  Also, some code size optimizations went in.

13. John improved our QMTest scripts so that they no longer require a
    separate, parallel tree for the test database.

14. The -deadargelim pass got improved to remove unused return values.

15. LLVM now has a simple interprocedural constant propagation pass, which
    gccas and gccld use to eliminate arguments.

16. The documentation for bugpoint was dramatically improved.  If you're
    not familar with bugpoint, you should check it out:

17. The new Function::viewCFG* methods were added:

18. Misha gets major kudos for style-sheeting the docs and download page
    the day of the release.

19. Brian updated the C front-end to compile and work on i386/FreeBSD,
    which is a fully functional LLVM platform now (JIT included)

20. The linker now merges "incompatible" types with a warning instead of
   giving an error and quitting.  This allows many more programs to link
   with the LLVM C/C++ frontend.

21. Many minor bugs all over the place were fixed.

After 1.0:

1. Since 1.0, we've fixed a large number of bugs (36 at current count).
   If you're interested, you can find a full list here (the "to be 1.1"
   release notes):

   In particular, several severe C++ bugs have been fixed since the

2. The LLVM profiler, llvm-prof, is now in the wild:
   It suppors simple function and block-count profiling so far, is
   designed to be extensible to other flavors.

3. Brian hacked on the C/C++ front-end to make it work with Mac OS/X.
   LLVM now works pretty well on OS/X, except of course that there is no
   PPC backend yet.  That said, there is always the C backend and...

4. Brian has also been working on make the LLVM interpreter work.  In
   particular, he implemented exception handling and variable argument
   handling support.

5. Bugpoint no longer crashes while performing "final cleanups".  This
   allowed removing the -disable-final-cleanups option (yaay).

6. Reid Spencer contributed the LLVM Namespacification patch, which
   allows LLVM to interoperate with other people's source bases better:

7. Misha is on a quest to clean up our web pages, and make them really be
   HTML 4.0 compliant.  In the process he's converting them to use style
   sheets so that the documentation is more consistent and will eventually
   lose the ugly purple bars :)

8. Brian spiffed up llvm-nm to support archive files.

9. We just found out that the LLVM overview paper we sent to CGO got
   accepted!  If you're interested, our submission is available here:

As you can see, we've fixed a LOT of bugs since 1.0.  If you can, I highly
recommend trying out the leading edge CVS tree for the LLVM core: it has
all of the bugfixes in it, and should be stable.  If you don't want to do
that, we are probably going to release 1.1 in the next couple of weeks.
This will obviously incorporate all of the bugfixes so far, plus a few new

If you have any questions about LLVM, what we're planning on doing, or
how to use it in your new favorite project, please let us know.  We want
LLVM to be as stable and powerful as possible, and we can only do that
with your feedback!  :)



LLVM mailing list
LLVM at cs.uiuc.edu

More information about the llvm-announce mailing list