From: Chris Lattner
This is the seventh public release of the LLVM Compiler Infrastructure. This -release incorporates a large number of enhancements and additions (primarily in -the code generator), which combine to improve the quality of the code generated -by LLVM by up to 30% in some cases. This release is also the first release to -have first-class support for Mac OS X: all of the major bugs have been shaken -out and it is now as well supported as Linux on X86.
+This is the eighth public release of the LLVM Compiler Infrastructure. This +release incorporates a large number of enhancements and new features, +including vector support (Intel SSE and Altivec), a new GCC4.0-based +C/C++ front-end, Objective C/C++ support, inline assembly support, and many +other big features. +
LLVM 1.8 includes a brand new llvm-gcc, based on GCC 4.0.1. This version +of llvm-gcc solves many serious long-standing problems with llvm-gcc, including +all of those blocked by the llvm-gcc 4 meta +bug. In addition, llvm-gcc4 implements support for many new features, +including GCC inline assembly, generic vector support, SSE and Altivec +intrinsics, and several new GCC attributes. In addition, llvm-gcc4 is +significantly faster than llvm-gcc3, respects -O options, its -c/-S options +correspond to GCC's (they emit native code).
+ +If you can use it, llvm-gcc4 is offers significant new functionality, and we +hope that it will replace llvm-gcc3 completely in a future release. +Unfortunately, it does not currently support C++ exception handling at all, and +it only works on Apple Mac OS/X machines with X86 or PowerPC processors. +
+ +The LLVM IR and llvm-gcc4 front-end now fully support arbitrary GCC inline assembly. The LLVM X86 and PowerPC +code generators have initial support for it, +being able to compile basic statements, but are missing some features. Please +report any inline asm statements that crash the compiler or that are miscompiled +as bugs.
+ +LLVM 1.7 includes a new, fully functional, SPARC backend built in the +target-independent code generator. This SPARC backend includes support for +SPARC V8 and SPARC V9 subtargets (controlling whether V9 features can be used), +and targets the 32-bit SPARC ABI.
+ +The LLVM 1.7 release is the last release that will include the LLVM "SparcV9" +backend, which was the very first LLVM native code generator. In 1.8, it will +be removed, replaced with the new SPARC backend.
+ +LLVM now includes significantly extended support for SIMD vectors in its +core instruction set. It now includes three new instructions for manipulating +vectors: extractelement, +insertelement, and +shufflevector. Further, +many bugs in vector handling have been fixed, and vectors are now supported by +the target-independent code generator. For example, if a vector operation is +not supported by a particular target, it will be correctly broken down and +executed as scalar operations.
+ +Because llvm-gcc3 does not support GCC generic vectors or vector intrinsics, +so llvm-gcc4 must be used.
+The LLVM X86 backend now supports Intel SSE 1, 2, and 3, and now uses scalar +SSE operations to implement scalar floating point math when the target supports +SSE1 (for floats) or SSE2 (for doubles). Vector SSE instructions are generated +by llvm-gcc4 when the generic vector mechanism or specific SSE intrinsics are +used. +
+ +The LLVM PowerPC backend now supports the Altivec instruction set, including +both GCC -maltivec and -faltivec modes. Altivec instructions are generated +by llvm-gcc4 when the generic vector mechanism or specific Altivec intrinsics +are used. +
+ ++llvm-gcc3 has many significant problems that are fixed by llvm-gcc4. See + those blocked on the llvm-gcc4 meta bug. +Two signicant ones include:
for (i = 0; i != 1000000; ++i) { @@ -214,7 +331,7 @@ suffers from none of these. }