[llvm-announce] LLVM Status Update
Fri, 6 Feb 2004 17:11:12 -0600 (CST)
Hi all LLVMers!
It's time for another dose of LLVM status update. Since 1.1, we've fixed
34 new LLVM bugs (including a lot of quality-of-implementation bugs), sped
up the optimizer, and even implemented some new features. Here are the
1. Misha reorganized the sparc backend to be a bit more modular and
cleaned up the asmwriter.
2. The JIT now lazily initializes global variables instead of initializing
them all at once, which leads to faster startup times, especially for
3. LLVM now has a (partially implemented) source-level debugger! This
debugger can currently walk through the program (step,next,finish,run,
cont,etc) and inspect the stack, but can't set breakpoints or print
program variables. If you're interested, the philosophy and design of
the debugger are described here:
This will continue to be worked on in the the coming months, but we
don't have a specific ETA for a finished and completely useful debugger.
4. Alkis has been working on the linear scan register allocator. It now
outperforms the local allocator in almost all cases, and there is one
big improvement he has left to do. The linear scan allocator will
probably be the default for 1.2.
5. The C front-end now correctly turns 'extern inline' into LLVM linkonce
linkage, giving the optimizer more freedom.
6. The LLVM constant folding interfaces are much simpler and cleaner. If
you want to fold a constant expression, just use ConstantExpr::get*.
7. Bytecode files have been shrunk for 1.2 fairly substantially for large
programs (15-30%). We are now running out of obvious things that can
be done to shrink bytecode files (aside from using bzip2 or gzip :)
8. Brian checked in a _skeletal_ PowerPC backend that he had in his tree.
This backend doesn't work, and is missing several large pieces, but
could be a starting point for someone interested in starting the
9. LLVM now supports -0.0 much better, and support for floating point
constants on big-endian 32-bit targets (like powerpc) is not
completely broken now.
10. John merged new bits from the GCC CVS repository into our C/C++
front-end. We are still lagging, but a lot closer to current.
11. Alkis simplified the way that the X86 backend handles two address
instructions (such as REG += REG).
12. John fixed the gccld -native option to work correctly with crtend.a
13. The loadvn/gcse pass, the inliner, and the scalarerepl/mem2reg passes
have all been dramatically sped up in cases where the program has
large basic blocks. For example, the testcase in PR209 went from
taking 300s to optimize to 2s.
14. Brian fixed a problem that could occur when using the precompiled C
front-end on power-pc, which resulted in an obscure "can't find a rule
to build x" when building the runtime libraries.
15. As recently noted, TableGen is now documented.
At this point, we don't have immediate plans for the 1.2 release, but the
magic eightball say that a release in the next month or so is pretty
likely. If you are working with LLVM and would like to get these updates,
you can choose to work with LLVM CVS. As always, if you have any
questions or comments, feel free to send them our way!
Here's the previous status update: