[LLVMdev] LLVM Status Update
Tue Oct 7 23:29:00 2003
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
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.