The LLVM 1.4 Release is now out! Get it here: http://llvm.cs.uiuc.edu/releases/ or read about it here: http://llvm.cs.uiuc.edu/releases/1.4/docs/ReleaseNotes.html#whatsnew This release features a huge assortment of improvements in functionality, generated code quality, and compile times. Thanks to everyone who has helped make this release the best one yet. In addition to the changes mentioned below, this release also includes the changes mentioned in the October 11 status update, here: http://mail.cs.uiuc.edu/pipermail/llvm-announce/2004-October/000012.html Here's a quick summary of the biggest changes since Oct 11: High-Level Changes: 1. This releases includes a fully functional PowerPC JIT compiler. 2. Michael McCracken contributed patches to llvm-gcc to allow it to emit source-line number debug information when passed -g. This debug information works correctly with llvm-db. 3. Tanya converted the LLVM regression test suite from QMTest to Dejagnu, fixing some long-standing problems with the test suite. 4. Reid finished implementation of llvm-ar and added an llvm-ranlib tool, which allows LLVM to index .a files for faster link times. 5. Reid has 'llvmc' fully functional in this release. We hope to switch over to using llvmc as the default compiler driver for the 1.5 release. http://llvm.cs.uiuc.edu/docs/CompilerDriver.html 6. LLVM is now much more compatible with Visual C++ 7.1, thanks to the efforts of Morten Ofstad, Jeff Cohen, and others. It is now possible to build and use LLVM for JIT applications with VC7.1, and LLVM now includes Visual Studio projects files in llvm/win32. 7. Reid changed the makefiles to build tools into llvm/Debug/bin instead of llvm/tools/Debug. Make sure to remove the old directory when you upgrade (similarly for Release and Profile builds). 8. We now host an "LLVM Developer Page", including mugshots of some of the LLVM hackers. If you'd like to be included, please send in a photo: http://llvm.cs.uiuc.edu/Developers.html Core LLVM Changes: 9. LLVM now includes an unreachable instruction and 'undef' value, which provide more information to the optimizer: http://llvm.cs.uiuc.edu/docs/LangRef.html#undefvalues http://llvm.cs.uiuc.edu/docs/LangRef.html#i_unreachable 10. Reid contributed changes to allow the bytecode writer to automatically compress and decompress LLVM bytecode files with bzip2 compression, making them approximately 50% smaller. 11. Reid split all linking related functionality into a new lib/Linker directory and library. All .a file routines are in lib/Bytecode/Archive. 12. A new 'llvm/IntrinsicInst.h' header is available, which provides classes to simplify code that deals with intrinsic function calls. 13. Misha enhanced the JIT to not emit stubs for external functions like 'printf' on targets that do not require them. 14. The JIT interfaces have been completely reworked to make them simpler, more efficient, and require less target-specific code. 15. LLVM now tracks target triplets for compiled LLVM modules, allowing code generators to be intelligently selected. Documentation Changes: 16. John, Reid, and Tanya audited the documentation, making many corrections and updating several of the documents. 17. Reid fully documented the LLVM Makefile system in this document: http://llvm.cs.uiuc.edu/docs/MakefileGuide.html 18. Full documentation on LLVM constants was added to the LangRef document: http://llvm.cs.uiuc.edu/docs/LangRef.html#constants Target Specific Code Generator Improvements: 19. Misha implemented the machine code emitter for the PowerPC target. 20. Nate substantially improved instruction selection in the PowerPC backend, allowing it to generate rlwimi, rlwinm, and other instructions. 21. Jeff Cohen contributed patches to allow the X86 backend to fold the addresses of globals more aggressively into X86 memory references. 22. John contributed a patch to the C backend to make it emit code that has fewer dynamic copies for PHI nodes, speeding up the resultant code. 23. The X86 backend now spills floating point values with 64-bits of precision instead of 80-bits. This speeds up floating point intensive programs dramatically (up to 2x), as 80-bit instructions are often microcoded. 24. Nate fixed the PowerPC instruction selector to emit far fewer move instructions, improving compile time with the PowerPC backend. Build System Improvements: 25. Reid improved the makefiles to build LLVM about twice as fast as before. 26. Reid added new standard targets to the LLVM makefiles, like dist-check. 'make install' now installs man pages for all tools. Doxygen documentation can now be built upon "make install" if it is configured with --enable-doxygen. 27. Reid changes the runtime libraries to build proper .a files instead of .bc files, allowing them to be specified multiple times without harm. 28. Reid changed libraries and object files generated by building LLVM all now have an LLVM prefix (preventing collisions with existing libraries) 29. Reid made our configure script more standard (PR256) and made it check for known good version numbers of tools. Miscellaneous Improvements: 30. The -globalopt pass is more aggressive about optimizing away global variables. 31. The -simplifycfg pass now performs simple code factoring in some cases, reducing code size. 32. gccld now supports both -S and -s options to strip all symbols or just debug symbols from the resultant binary (for compatibility with ld). 33. The C++ frontend no longer expands and emits all inline functions, even if they are unused. It now properly tracks which functions are used and only emits those that are needed. Notable bug fixes: 34. A linker bug has been fixed, allowing all of the Fortran 77 SPEC benchmarks to work with f2c and LLVM. 35. PR139: Linker doesn't link objects/archives in order specified on the command line. 36. Several C/C++ front-end bugs, including PR244, 277, 360, 397, 421, 424, 447, 459, and 461. 37. Several compile-time speedups are included in this release for various LLVM components. Finally, here's a link to the Oct 11th status update, which includes more goodies that are new to the 1.4 release: http://mail.cs.uiuc.edu/pipermail/llvm-announce/2004-October/000012.html If you have any questions or comments about LLVM or any of the features in this status update, please feel free to contact us on the llvmdev mailing list (llvmdev at cs.uiuc.edu)! -Chris -- http://nondot.org/sabre/ http://llvm.cs.uiuc.edu/