X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FReleaseNotes.html;h=d22a389da4e0c23ee97d6d69869fb964c65e2908;hb=bcd10f162dd6b97bb6fbe05aa66bdcb02e33277d;hp=e4b4148129bd0f1665fb679639aa8c2d47b93258;hpb=d3582daa22ebd0c20002e21901c6be78a851302f;p=oota-llvm.git diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html index e4b4148129b..d22a389da4e 100644 --- a/docs/ReleaseNotes.html +++ b/docs/ReleaseNotes.html @@ -4,11 +4,11 @@
-This document contains the release notes for the LLVM compiler -infrastructure, release 1.7. Here we describe the status of LLVM, including any -known problems and major improvements from the previous release. The most -up-to-date version of this document can be found on the LLVM releases web site. If you are -not reading this on the LLVM web pages, you should probably go there because -this document may be updated after the release.
+infrastructure, release 2.0. Here we describe the status of LLVM, including any +known problems and major improvements from the previous release. All LLVM +releases may be downloaded from the LLVM +releases web site.For more information about LLVM, including information about the latest release, please check out the main LLVM @@ -60,218 +58,410 @@ href="http://llvm.org/releases/">releases page.
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. -
+This is the eleventh public release of the LLVM Compiler Infrastructure. +Being the first major release since 1.0, this release is different in several +ways from our previous releases:
+ +Note that while this is a major version bump, this release has been + extensively tested on a wide range of software. It is easy to say that this + is our best release yet, in terms of both features and correctness.
LLVM 1.7 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. Finally, llvm-gcc4 is -significantly faster than llvm-gcc3, respects -O options, its -c/-S options -correspond to GCC's (they emit native code), supports Objective C/C++, and -it has debugging support well underway.
- -If you can use it, llvm-gcc4 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. +
blah
-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. It will -be removed in LLVM 1.8, being 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, -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. +
New features include:
-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. -
+New features include: +
++New features include: +
+In addition, the LLVM target description format has itself been extended in + several ways:
+ +X86-Specific Code Generator Enhancements: +
+ARM-Specific Code Generator Enhancements: +
+ +Other Target-Specific Code Generator Enhancements: +
+ +This release includes many other improvements, including +performance work, specifically designed to tune datastructure +usage. This makes several critical components faster.
+ +More specific changes include:
+ +LLVM 2.0 contains a revamp of the type system and several other significant +internal changes. If you are programming to the C++ API, be aware of the +following major changes:
++ Value *Ops[] = { Op1, Op2, Op3 }; + GEP = new GetElementPtrInst(BasePtr, Ops, 3); ++ + This avoids creation of a temporary vector (and a call to malloc/free). If + you have an std::vector, use code like this: +
+ std::vector<Value*> Ops = ...; + GEP = new GetElementPtrInst(BasePtr, &Ops[0], Ops.size()); ++ +
-llvm-gcc3 has many significant problems that are fixed by llvm-gcc4. See - those blocked on the llvm-gcc4 meta bug. -Two major ones include:
+- for (i = 0; i != 1000000; ++i) { - int X[n]; - foo(X); - } -
The following GCC extensions are partially supported. An ignored - attribute means that the LLVM compiler ignores the presence of the attribute, - but the code should still work. An unsupported attribute is one which is - ignored by the LLVM compiler and will cause a different interpretation of - the program.
+ + -llvm-gcc4 does not currently support Link-Time +Optimization on most platforms "out-of-the-box". Please inquire on the +llvmdev mailing list if you are interested.
- Supported: format, format_arg, non_null, - noreturn, constructor, destructor, - unused, used, - deprecated, warn_unused_result, weak"long double" is silently transformed by the front-end into "double". There +is no support for floating point data types of any size other than 32 and 64 +bits.
llvm-gcc does not support __builtin_apply yet. + See Constructing Calls: Dispatching a call to another function.
+llvm-gcc partially supports tthese GCC extensions:
+The following extensions are known to be supported:
+llvm-gcc supports the vast majority of GCC extensions, including:
typeof
: referring to the type of an expression.void
-pointers and function pointers.For this release, the C++ front-end is considered to be fully +
The C++ front-end is considered to be fully tested and works for a number of non-trivial programs, including LLVM -itself.
- -