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 highlights: 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 C++ programs. 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: http://llvm.cs.uiuc.edu/docs/SourceLevelDebugging.html 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 project. 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: http://mail.cs.uiuc.edu/pipermail/llvm-announce/2003-December/000004.html -Chris -- http://llvm.cs.uiuc.edu/ http://www.nondot.org/~sabre/Projects/