[llvm-announce] LLVM 1.4 Release and Status Update!
sabre at nondot.org
Thu Dec 9 15:12:32 PST 2004
The LLVM 1.4 Release is now out! Get it here:
or read about it here:
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:
Here's a quick summary of the biggest changes since Oct 11:
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
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
Core LLVM Changes:
9. LLVM now includes an unreachable instruction and 'undef' value, which
provide more information to the optimizer:
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.
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
18. Full documentation on LLVM constants was added to the LangRef
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
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
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
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.
30. The -globalopt pass is more aggressive about optimizing away global
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
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
Finally, here's a link to the Oct 11th status update, which includes more
goodies that are new to the 1.4 release:
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)!
More information about the llvm-announce