X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FReleaseNotes.html;h=56dd66a21aa53860577177cb78dd5c89a3456dc3;hb=8cb8245cf117fc4a4f0a6549d9a773a12895550c;hp=3599eb896cdb200673a3366a57ea397df0efabc1;hpb=4e16d4000be7bf71990e48e8849a5ca1fdaa2ad0;p=oota-llvm.git diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html index 3599eb896cd..56dd66a21aa 100644 --- a/docs/ReleaseNotes.html +++ b/docs/ReleaseNotes.html @@ -1,3 +1,4 @@ + @@ -12,6 +13,7 @@
LLVM 2.2 was the last LLVM release to support llvm-gcc 4.0 and llvm-upgrade. -llvm-gcc 4.0 has been replaced with llvm-gcc 4.2. llvm-upgrade was useful for -upgrading LLVM 1.9 files to LLVM 2.x syntax, but you can always use a previous -LLVM release to do this. One nice impact of this is that the LLVM regressionn -test suite no longer depends on llvm-upgrade, which makes it run faster.
+LLVM 2.3 no longer supports llvm-gcc 4.0, it has been replaced with + llvm-gcc 4.2.
+ +LLVM 2.3 no longer includes the llvm-upgrade tool. It was useful + for upgrading LLVM 1.9 files to LLVM 2.x syntax, but you can always use a + previous LLVM release to do this. One nice impact of this is that the LLVM + regression test suite no longer depends on llvm-upgrade, which makes it run + faster.
+ +The llvm2cpp tool has been folded into llc, use + llc -march=cpp instead of llvm2cpp.
-LLVM 2.3 renames the LLVMBuilder and LLVMFoldingBuilder classes to - IRBuilder.
+LLVM API Changes:
++The core LLVM 2.3 distribution currently consists of code from the core LLVM +repository (which roughly contains the LLVM optimizer, code generators and +supporting tools) and the llvm-gcc repository. In addition to this code, the +LLVM Project includes other sub-projects that are in development. The two which +are the most actively developed are the new vmkit Project +and the Clang Project. +
+LLVM 2.3 includes several major new capabilities:
+ ++The "vmkit" project is a new addition to the LLVM family. It is an +implementation of a JVM and a CLI Virtual Machines (Microsoft .NET is an +implementation of the CLI) using the Just-In-Time compiler of LLVM.
+ +The JVM, called JnJVM, executes real-world applications such as Apache +projects (e.g. Felix and Tomcat) and the SpecJVM98 benchmark. It uses the GNU +Classpath project for the base classes. The CLI implementation, called N3, is +its in early stages but can execute simple applications and the "pnetmark" +benchmark. It uses the pnetlib project as its core library.
+ +The 'vmkit' VMs compare in performance with industrial and top open-source +VMs on scientific applications. Besides the JIT, the VMs use many features of +the LLVM framework, including the standard set of optimizations, atomic +operations, custom function provider and memory manager for JITed methods, and +specific virtual machine optimizations. vmkit is not an official part of LLVM +2.3 release. It is publicly available under the LLVM license and can be +downloaded from: +
+svn co http://llvm.org/svn/llvm-project/vmkit/trunk vmkit+
LLVM 2.3 includes a complete reimplementation of the "llvmc" tool. It is -designed to overcome several problems of the original llvmc and to provide a -superset of the features as the 'gcc' driver.
+The main features of llvmc2 is:
+ +The Clang project is an effort to build +a set of new 'LLVM native' front-end technologies for the LLVM optimizer +and code generator. Clang is continuing to make major strides forward in all +areas. Its C and Objective-C parsing support is very solid, and the code +generation support is far enough along to build many C applications. While not +yet production quality, it is progressing very nicely. In addition, C++ +front-end work has started to make significant progress.
+ +At this point, Clang is most useful if you are interested in source-to-source +transformations (such as refactoring) and other source-level tools for C and +Objective-C. Clang now also includes tools for turning C code into pretty HTML, +and includes a new static +analysis tool in development. This tool focuses on automatically finding +bugs in C and Objective-C code.
+ +LLVM 2.3 includes a huge number of bug fixes, performance tweaks and minor +improvements. Some of the major improvements and new features are listed in +this section. +
+LLVM 2.3 includes several major new capabilities:
+ +The biggest change in LLVM 2.3 is Multiple Return Value (MRV) support. + MRVs allow LLVM IR to directly represent functions that return multiple + values without having to pass them "by reference" in the LLVM IR. This + allows a front-end to generate more efficient code, as MRVs are generally + returned in registers if a target supports them. See the LLVM IR Reference for more details.
+ +MRVs are fully supported in the LLVM IR, but are not yet fully supported in + on all targets. However, it is generally safe to return up to 2 values from + a function: most targets should be able to handle at least that. MRV + support is a critical requirement for X86-64 ABI support, as X86-64 requires + the ability to return multiple registers from functions, and we use MRVs to + accomplish this in a direct way.
LLVM 2.3 includes a complete reimplementation of the "llvmc" + tool. It is designed to overcome several problems with the original + llvmc and to provide a superset of the features of the + 'gcc' driver.
+ +The main features of llvmc2 are: +
LLVM 2.3 includes a completely rewritten interface for Link Time Optimization. This interface + is written in C, which allows for easier integration with C code bases, and + incorporates improvements we learned about from the first incarnation of the + interface.
The Kaleidoscope tutorial now + includes a "port" of the tutorial that uses the Ocaml bindings to implement + the Kaleidoscope language.
LLVM 2.3 fully supports llvm-gcc 4.2 front-end.
+LLVM 2.3 fully supports the llvm-gcc 4.2 front-end, and includes support +for the C, C++, Objective-C, Ada, and Fortran front-ends.
-llvm-gcc 4.2 includes numerous fixes to better support the Objective-C -front-end. Objective-C now works very well on Mac OS/X.
++
llvm-gcc 4.2 includes many other fixes which improve conformance with the -relevant parts of the GCC testsuite.
+The clang project is an effort to build -a set of new 'llvm native' front-end technologies for the LLVM optimizer -and code generator. Currently, its C and Objective-C support is maturing -nicely, and it has advanced source-to-source analysis and transformation -capabilities. If you are interested in building source-level tools for C and -Objective-C (and eventually C++), you should take a look. However, note that -clang is not an official part of the LLVM 2.3 release. If you are interested in -this project, please see its web site.
+New features include:
+We put a significant amount of work into the code generator infrastructure, -which allows us to implement more aggressive algorithms and make it run -faster:
+In addition to a huge array of bug fixes and minor performance tweaks, the +LLVM 2.3 optimizers support a few major enhancements:
Loop index set splitting on by default. +This transformation hoists conditions from loop bodies and reduces a loop's +iteration space to improve performance. For example,
+ ++for (i = LB; i < UB; ++i) + if (i <= NV) + LOOP_BODY ++
is transformed into:
+ ++NUB = min(NV+1, UB) +for (i = LB; i < NUB; ++i) + LOOP_BODY ++
In addition to a huge array of bug fixes and minor performance tweaks, the -LLVM 2.3 optimizers support a few major enhancements:
+We put a significant amount of work into the code generator infrastructure, +which allows us to implement more aggressive algorithms and make it run +faster:
LLVM is known to work on the following platforms:
The core LLVM infrastructure uses GNU autoconf to adapt itself @@ -368,7 +599,7 @@ href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVMdev list.
llvm-gcc does not currently support Link-Time @@ -520,8 +745,8 @@ llvmdev mailing list if you are interested.
The only major language feature of GCC not supported by llvm-gcc is the __builtin_apply family of builtins. However, some extensions are only supported on some targets. For example, trampolines are only - supported on some targets, which are used when you take the address of a - nested function.
+ supported on some targets (these are used when you take the address of a + nested function).If you run into GCC extensions which are not supported, please let us know.
@@ -541,8 +766,8 @@ itself, Qt, Mozilla, etc.