Hi LLVMers! It's official: LLVM 1.1 is now officially available! I think that everyone who has worked on it is really proud of the high quality of the release. It is faster, more robust, and more featureful than 1.0. If you are currently using LLVM 1.0, I _highly_ recommend upgrading. Huge thanks go out to all those that helped make it possible. You can download it here: http://llvm.cs.uiuc.edu/releases/ A detailed list of the new features and fixed bugs can be found in the 1.1 release notes: http://llvm.cs.uiuc.edu/releases/1.1/docs/ReleaseNotes.html#whatsnew ... on to the status update. Since the last status update (which included quite a few new 1.1 features as well), we've made quite a bit of progress in various areas. All of these changes are in LLVM 1.1: 1. The bytecode reader and type-resolution machinery has been significantly streamlined. This improves bytecode loading times by up to 4x in some cases with lots of types (like C++ programs). 2. The inliner has a much more accurate cost metric to decide when to inline functions, taking into account an approximate amount of code that will be DCE'd after inlining, due to constant propagation of arguments. Note that the inliner is still not tuned to be aggressive. You can play around with -inline-threshold to experiment. 3. Brian chased down the remaining problems with LLVM and Mac OS X, extended the LLVM .a file reader to support BSD-style archives, and patched the C frontend. 1.1 should work quite well with OS X thanks to his efforts! 4. John revamped the LLVM autoconf/makefiles to automatically copy makefiles from the SRCDIR into the OBJDIR. This should reduce the number of times you have to rerun configure if you are working out of CVS. Details here: http://mail.cs.uiuc.edu/pipermail/llvmdev/2003-November/000677.html 5. In the C++ front-end, objects in anonymous namespaces are given internal linkage, giving the compile-time optimizer more freedom. 6. Reid Spencer contributed a new Stacker front-end for LLVM! This is the first "native" LLVM front-end and is an excellent example demonstrating how to write a front-end for LLVM. If you're interested, Reid wrote a document describing his experiences: http://llvm.cs.uiuc.edu/docs/Stacker.html Now if someone just wrote a stacker backend for LLVM.... ;-) 7. The crtend library is now built as an archive, which should solve some link and compatibility problems with Mac OS X. 8. Bytecode files in LLVM 1.1 are about 20% more compact than they were in 1.0 (for a given .ll file). A side-effect of this is that 1.0 won't read 1.1 bytecode files, but we maintain backwards compatibility with all bytecode revisions, so 1.1 can read 1.0 files. 9. Misha checked in a cool feature to gccld so that it adds --load options to the program script for a compiled program. This means that many programs that require native libraries (such as X11 libraries) will now work with LLVM and the JIT without tweaking the script. 10. The LLVM dominator analyses were completely rewritten to use the Lengauer & Tarjan algorithm, which speeds up gccas quite a bit in some large testcases. 10. The LLVM C++ front-end in particular has had a number of important bugfixes and improvements. We can now compile and run a large number of C++ programs "off the shelf", including LLVM itself! 11. The TailCallElimination pass is now much more aggressive than it was before. In particular, it can now introduce accumulator variables to translate naive implementations of functions like "fib" and "pow" into nice tight loops. 12. The LICM pass can now sink computations out the bottom of loops in addition to hoisting them out the top. This reduces the amount of computation in loops and reduces register pressure. 13. The "-basicaa" alias analysis pass (the default) is now _significantly_ more precise in many common cases (see PR86). 14. The startup time of the LLVM JIT has been improved quite a bit for programs that have lots of globals with pointers to functions (such as C++ vtables). For example, running "ll-opt --help" (LLVM opt, compiled with LLVM) sped up by 2.5 times. There is still room for improvement: see PRs 177 & 135 for details. ... and of course, tons of bugs have been fixed, particularly in the C/C++ front-ends. Bugzilla is showing 55 bugs moved to the resolved/fixed state since the last status update. I want to thank John especially for all his hard work putting together the 1.1 release. He did a great job triaging and fixing sparc bugs and hacking the release notes into presentable shape. In addition, Brian did a great job putting together and testing the FreeBSD and Mac OS X tools: thanks guys! As always, we welcome and encourage comments, questions and feedback on the llvmdev list. Here's the previous status update: http://mail.cs.uiuc.edu/pipermail/llvm-announce/2003-November/000003.html -Chris -- http://llvm.cs.uiuc.edu/ http://www.nondot.org/~sabre/Projects/