[llvm-announce] LLVM Status Update
sabre at nondot.org
Tue Nov 18 09:15:58 PST 2003
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"
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
5. Misha improved the JIT to incrementally load bytecode files from the
disk as functions are needed. This reduces startup time as well as
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
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.
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"
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
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