X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FReleaseNotes.html;h=1ab2b709f58cfbb78b3555b5fa04e4fa45812de4;hb=ead66027e8a93dbbb9eec37807c34585aeafe67b;hp=367f6cb6ba216e69b805f139f20445b8a2bc17fe;hpb=e9a73bbdd7f5667d76c424a3ea7a20ae0cace601;p=oota-llvm.git diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html index 367f6cb6ba2..1ab2b709f58 100644 --- a/docs/ReleaseNotes.html +++ b/docs/ReleaseNotes.html @@ -4,11 +4,11 @@
-Written by the LLVM Team
This document contains the release notes for the LLVM Compiler - Infrastructure, release 3.1. Here we describe the status of LLVM, including + Infrastructure, release 3.2. Here we describe the status of LLVM, including major improvements from the previous release, improvements in various - subprojects of LLVM, and some of the current users of the code. - All LLVM releases may be downloaded from - the LLVM releases web site.
+ subprojects of LLVM, and some of the current users of the code. 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 web @@ -72,11 +72,11 @@ Release Notes.
The LLVM 3.1 distribution currently consists of code from the core LLVM - repository (which roughly includes the LLVM optimizers, code generators and - supporting tools), and the Clang repository. In - addition to this code, the LLVM Project includes other sub-projects that are - in development. Here we include updates on these subprojects.
+The LLVM 3.2 distribution currently consists of code from the core LLVM + repository, which roughly includes the LLVM optimizers, code generators and + supporting tools, and the Clang repository. In addition to this code, the + LLVM Project includes other sub-projects that are in development. Here we + include updates on these subprojects.
In the LLVM 3.1 time-frame, the Clang team has made many improvements. +
In the LLVM 3.2 time-frame, the Clang team has made many improvements. Highlights include:
For more details about the changes to Clang since the 3.0 release, see the -Clang release notes -
- +For more details about the changes to Clang since the 3.1 release, see the + Clang release + notes.
If Clang rejects your code but another compiler accepts it, please take a look at the language @@ -125,6 +117,7 @@ Release Notes.
DragonEgg is a gcc plugin that replaces GCC's optimizers and code generators with LLVM's. It works with gcc-4.5 and gcc-4.6 @@ -133,25 +126,10 @@ Release Notes. Linux and OpenBSD platforms. It fully supports Ada, C, C++ and Fortran. It has partial support for Go, Java, Obj-C and Obj-C++.
-The 3.1 release has the following notable changes:
- -The 3.2 release has the following notable changes:
+__fixunsdfdi
function. The compiler-rt library provides highly
+ optimized implementations of this and other low-level routines (some are 3x
+ faster than the equivalent libgcc routines).
+
+The 3.2 release has the following notable changes:
-....
+...
+The 3.2 release has the following notable changes:
+ +...
+Within the LLVM 3.2 time-frame there were the following highlights:
+ +The VMKit project is an - implementation of a Java Virtual Machine (Java VM or JVM) that uses LLVM for - static and just-in-time compilation. +
The VMKit project is an implementation + of a Java Virtual Machine (Java VM or JVM) that uses LLVM for static and + just-in-time compilation.
-In the LLVM 3.1 time-frame, VMKit has had significant improvements on both - runtime and startup performance:
+The 3.2 release has the following notable changes:
-Polly is an experimental +
Polly is an experimental optimizer for data locality and parallelism. It currently provides high-level loop optimizations and automatic parallelisation (using the OpenMP run time). Work in the area of automatic SIMD and accelerator code generation was - started. - -
Within the LLVM 3.1 time-frame there were the following highlights:
- -Within the LLVM 3.2 time-frame there were the following highlights:
+ +An exciting aspect of LLVM is that it is used as an enabling technology for - a lot of other language and tools projects. This section lists some of the - projects that have already been updated to work with LLVM 3.1.
+ a lot of other language and tools projects. This section lists some of the + projects that have already been updated to work with LLVM 3.2. + +Crack aims to provide + the ease of development of a scripting language with the performance of a + compiled language. The language derives concepts from C++, Java and Python, + incorporating object-oriented programming, operator overloading and strong + typing.
+ +This release includes a huge number of bug fixes, performance tweaks and - minor improvements. Some of the major improvements and new features are + minor improvements. Some of the major improvements and new features are listed in this section.
@@ -419,13 +412,13 @@ Release Notes.LLVM 3.1 includes several major changes and big features:
+LLVM 3.2 includes several major changes and big features:
LLVM IR has several new features for better support of new targets and that expose new optimization opportunities:
-In addition to many minor performance tweaks and bug fixes, this - release includes a few major enhancements and additions to the - optimizers:
+In addition to many minor performance tweaks and bug fixes, this release + includes a few major enhancements and additions to the optimizers:
-unroll-runtime
flag.-vectorize
to run this pass along with some associated
- post-vectorization cleanup passes. For more information, see the EuroLLVM
- 2012 slides:
- Autovectorization with LLVM.The LLVM Machine Code (aka MC) subsystem was created to solve a number of problems in the realm of assembly, disassembly, object file format handling, and a number of other related areas that CPU instruction-set level tools work - in. For more information, please see - the Intro - to the LLVM MC Project Blog Post.
+ in. For more information, please see the + Intro + to the LLVM MC Project Blog Post.MachineRegisterInfo
now allows the reserved registers to be
- frozen when register allocation starts. Target hooks should use the
- MRI->canReserveReg(FramePtr)
method to avoid accidentally
- disabling frame pointer elimination during register allocation.MachineOperand
provides a compact
- representation of large clobber lists on call instructions. The register
- mask operand references a bit mask of preserved registers. Everything else
- is clobbered.We added new TableGen infrastructure to support bundling for @@ -583,11 +529,14 @@ Release Notes.
A probability based block placement and code layout algorithm was added to
-LLVM's code generator. This layout pass supports probabilities derived from
-static heuristics as well as source code annotations such as
-__builtin_expect
.
__builtin_expect
.
+
New features and major changes in the X86 target include:
New features of the ARM target include:
The ARM target now includes a full featured macro assembler, including -direct-to-object module support for clang. The assembler is currently enabled -by default for Darwin only pending testing and any additional necessary -platform specific support for Linux.
+ direct-to-object module support for clang. The assembler is currently enabled + by default for Darwin only pending testing and any additional necessary + platform specific support for Linux.Full support is included for Thumb1, Thumb2 and ARM modes, along with -subtarget and CPU specific extensions for VFP2, VFP3 and NEON.
+ subtarget and CPU specific extensions for VFP2, VFP3 and NEON.The assembler is Unified Syntax only (see ARM Architecural Reference Manual -for details). While there is some, and growing, support for pre-unfied (divided) -syntax, there are still significant gaps in that support.
+ for details). While there is some, and growing, support for pre-unfied + (divided) syntax, there are still significant gaps in that support. +This release has seen major new work on just about every aspect of the MIPS - backend. Some of the major new features include:
+New features and major changes in the MIPS target include:
An outstanding conditional inversion bug was fixed in this release.
- -NOTE: LLVM 3.1 marks the last release of the PTX back-end, in its - current form. The back-end is currently being replaced by the NVPTX - back-end, currently in SVN ToT.
Support for Qualcomm's Hexagon VLIW processor has been added.
-If you're already an LLVM user or developer with out-of-tree changes based on - LLVM 3.1, this section lists some "gotchas" that you may run into upgrading + LLVM 3.2, this section lists some "gotchas" that you may run into upgrading from the previous release.
TargetOptions
class, which is local to each
- TargetMachine
. As a consequence, the associated flags will
- no longer be accepted by clang -mllvm. This includes:
-llvm::PrintMachineCode
llvm::NoFramePointerElim
llvm::NoFramePointerElimNonLeaf
llvm::DisableFramePointerElim(const MachineFunction &)
llvm::LessPreciseFPMADOption
llvm::LessPrecideFPMAD()
llvm::NoExcessFPPrecision
llvm::UnsafeFPMath
llvm::NoInfsFPMath
llvm::NoNaNsFPMath
llvm::HonorSignDependentRoundingFPMathOption
llvm::HonorSignDependentRoundingFPMath()
llvm::UseSoftFloat
llvm::FloatABIType
llvm::NoZerosInBSS
llvm::JITExceptionHandling
llvm::JITEmitDebugInfo
llvm::JITEmitDebugInfoToDisk
llvm::GuaranteedTailCallOpt
llvm::StackAlignmentOverride
llvm::RealignStack
llvm::DisableJumpTables
llvm::EnableFastISel
llvm::getTrapFunctionName()
llvm::EnableSegmentedStacks
In addition, some tools have changed in this release. Some of the changes are:
-Officially supported Python bindings have been added! Feature support is far -from complete. The current bindings support interfaces to:
+ from complete. The current bindings support interfaces to: +Using the Object File Interface, it is possible to inspect binary object files. -Think of it as a Python version of readelf or llvm-objdump.
- -Support for additional features is currently being developed by community -contributors. If you are interested in shaping the direction of the Python -bindings, please express your intent on IRC or the developers list.
-LLVM is generally a production quality compiler, and is used by a broad range of applications and shipping in many products. That said, not every subsystem is as mature as the aggregate, particularly the more obscure - targets. If you run into a problem, please check the LLVM bug database and submit a bug if - there isn't already one or ask on the LLVMdev - list.
+ targets. If you run into a problem, please check + the LLVM bug database and submit a bug if + there isn't already one or ask on + the LLVMdev + list.Known problem areas include:
@@ -845,7 +710,7 @@ bindings, please express your intent on IRC or the developers list.