[LLVMdev] LLVM Status Update

Chris Lattner sabre@nondot.org
Tue Oct 7 23:29:00 2003

Hi LLVMers,

We're actively working on finishing up the release, which has been
delayed.  Last week was dominated by several paper submissions which were
all due at about the same time, so the release fell behind (if you're
interested, the papers are available on the main page).  We are currently
shooting for getting the release out the door early next week.

That said, we have made a lot of progress towards the release, as
described below:

1. LLVM now supports setjmp/longjmp in C programs, thanks to Bill
   Wendling.  This is described in more detail here:

2. The -globaldce pass was completely rewritten.  It can now delete
   functions and global variables which have circular references between
   them, but are otherwise unreachable.

3. Bitfield support in the C/C++ Frontend was dramatically improved.

4. John wrote "man pages" for all of the LLVM tools, which we collectively
   call the LLVM Command Guide: http://llvm.cs.uiuc.edu/docs/CommandGuide/

5. There is now a new tail recursion elimination pass.

6. Misha improved the bytecode loader to be able to load individual
   functions on demand.  This is useful for things like the JIT, although
   nothing is currently using the new capabilities.

7. Misha spearheaded the Great LLVM Tool Renaming project:
   The old 'as,dis,link' tools are now 'llvm-as,llvm-dis,llvm-link'

8. Bill Wendling contributed an improvement to the switch lowering pass,
   which changes it to emit a logarithmic comparison tree instead of a
   linear branch sequence.  This should improve the performance of the
   native code generators on large switch statements.

9. John added a new -native option to gccld, which makes LLVM work much
   better with off-the-shelf configure scripts.

10. Handling of opaque types has been dramatically improved in the LLVM
    core.  This means that parsing .ll & .bc files is dramatically faster
    in some cases, and that the nasty "linker bug" is finally gone.

11. The SSA construction pass (aka "mem2reg") has been dramatically sped
    up for programs which have high-degree basic blocks.  It has also been
    changed to build pruned SSA form instead of minimal SSA form, which is
    much more efficient (the dead PHI nodes are never useful anyway).

12. Misha added a new top-level "CREDITS.TXT" file, where we can keep
    track of all people who have contributed to LLVM.

13. The usual truckload of bug fixes.  Of particular note, the C++
    front-end has made major improvements, and is now able to compile the
    252.eon SPEC benchmark, among others.  The sparc back-end also
    supports the invoke instruction now (although it does not support
    unwinding), like the X86 backend.

Overall, we are making slow but steady progress towards our goal: a
feature complete, stable, and reliable 1.0 release we can all be proud of.
In particular, we are working on setting up Bugzilla for handling bug
reports and setting up a public anonymous CVS server.  Our hope is for the
1.0 release to go as smoothly as possible.