From 917cc71ae170601e9edcb8b20834ca9eecfa5efa Mon Sep 17 00:00:00 2001
From: Chris Lattner
Date: Mon, 2 Mar 2009 02:37:32 +0000
Subject: [PATCH] start translating this into Engrish and organizing it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65797 91177308-0d34-0410-b5e6-96231b3b80d8
---
docs/ReleaseNotes.html | 226 ++++++++++++++++++++++++-----------------
1 file changed, 133 insertions(+), 93 deletions(-)
diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html
index 035dace224d..e92be0d9b42 100644
--- a/docs/ReleaseNotes.html
+++ b/docs/ReleaseNotes.html
@@ -14,7 +14,7 @@
Introduction
Sub-project Status Update
External Projects Using LLVM 2.5
- What's New in LLVM?
+ What's New in LLVM 2.5?
Installation Instructions
Portability and Supported Platforms
Known Problems
@@ -64,6 +64,9 @@ current one. To see the release notes for a specific release, please see the
interpreter + libffi
postalloc scheduler: anti dependence breaking, hazard recognizer?
+initial support for debug line numbers when optimization enabled, not useful in
+ 2.5 but will be for 2.6.
+
-->
@@ -166,7 +169,7 @@ The VMKit project 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.
-
-http://pure-lang.googlecode.com/
-
-
-
-Pure is an algebraic/functional programming language based on term rewriting.
+Pure
+is an algebraic/functional programming language based on term rewriting.
Programs are collections of equations which are used to evaluate expressions in
a symbolic fashion. Pure offers dynamic typing, eager and lazy evaluation,
lexical closures, a hygienic macro system (also based on term rewriting),
@@ -231,16 +231,11 @@ it as a kind of functional scripting language for many application areas.
-http://www.dsource.org/projects/ldc
-
-
-
-I'd like to inform that the LDC project (LLVM D
-Compiler) is working with release 2.5 of LLVM. In fact we've required
-2.5 in our trunk since the release was branched.
-The improvements in 2.5 have fixed a lot of problems with LDC, more
-specifically the new inline asm constraints, better debug info
-support, general bugfixes :) and better x86-64 support have allowed
+LDC is an implementation of
+the D Programming Language using the LLVM optimizer and code generator.
+LDC project works great with the LLVM 2.5 release. General improvmenets in this
+cycle have included new inline asm constraint handling, better debug info
+support, general bugfixes, and better x86-64 support. This has allowed
some major improvements in LDC, getting us much closer to being as
fully featured as the original DMD compiler from DigitalMars.
@@ -252,17 +247,16 @@ fully featured as the original DMD compiler from DigitalMars.
-
http://code.roadsend.com/rphp
-
-
Roadsend PHP is using LLVM for code generation. This is an open source
-project.
-
+
Roadsend PHP (rphp) is an open
+source compiler for the PHP programming language that uses LLVM for its
+optimizer, JIT, and static compiler. This is a reimplementation of an earlier
+project that is now based on the LLVM.
@@ -284,73 +278,25 @@ in this section.
LLVM 2.5 includes several major new capabilities:
-The code generator now supports arbitrary precision integers.
-Types like i33 have long been valid in the LLVM IR, but previously
-could only be used with the interpreter.
-Now IR using such types can be compiled to native code on all targets.
-All operations are supported if the integer is not bigger than twice the
-target machine word size.
-Simple operations like loads, stores and shifts by a constant amount are
-supported for integers of any size.
-
+- LLVM 2.5 includes a brand new XCore backend.
-
+- The LLVM native code generator now supports arbitrary precision integers.
+Types like i33 have long been valid in the LLVM IR, but were previously
+only supported by the interpreter. Note that the C backend still does not
+support these.
+- LLVM 2.5 no longer uses 'bison', so it is easier to build on Windows.
@@ -368,7 +314,18 @@ front-ends and driver with the LLVM optimizer and code generator. It currently
includes support for the C, C++, Objective-C, Ada, and Fortran front-ends.
-
New features include:
+
LLVM IR has several new features that are used by our existing front-ends and
+can be useful if you are writing a front-end for LLVM:
-- ?
+- The shufflevector instruction
+has been generalized to allow different shuffle mask width than its input
+vectors. This allows you to use shufflevector to combine two
+"<4 x float>" vectors into a "<8 x float>" for example.
+
+- LLVM IR now supports new intrinsics for computing and acting on overflow of integer operations. This allows
+efficient code generation for languages that must trap or throw an exception on
+overflow. While these intrinsics work on all targets, they only generate
+efficient code on X86 so far.
+
+- LLVM IR now supports a new private
+linkage type to produce labels that are stripped by the assembler before it
+produces a .o file (thus they are invisible to the linker).
+
+- LLVM IR supports two new attributes for better alias analysis. The noalias attribute can now be used on the
+return value of a function to indicate that it returns new memory (e.g.
+'malloc', 'calloc', etc).
+
+- The new nocapture attribute can be
+used on pointer arguments to functions that access through but do not return the
+pointer in a data structure that out lives the call (e.g. 'strlen', 'memcpy',
+and many others). The simplifylibcalls pass applies these attributes to
+standard libc functions.
+
+- The parser for ".ll" files in lib/AsmParser is now completely rewritten as a
+recursive descent parser. This parser produces better error messages (including
+caret diagnostics) is less fragile (less likely to crash on strange things) does
+not leak memory, is more efficient, and eliminates LLVM's last use of the
+'bison' tool.
+
+- Debug information representation and manipulation internals have been
+ consolidated to use a new set of classes in
+ llvm/Analysis/DebugInfo.h classes. These routines are more
+ efficient, robust, and extensible and replace the older mechanisms.
+ llvm-gcc, clang, and the code generator now use them to create and process
+ debug information.
@@ -401,7 +396,22 @@ release includes a few major enhancements and additions to the optimizers:
-- ?
+- The loop optimizer now improves floating point induction variables in
+several ways, including adding shadow induction variables to avoid
+"integer <-> floating point" conversions in loops when safe.
+
+- The "-mem2reg" pass is now much faster on code with huge basic blocks.
+
+- The "-jump-threading" pass is more powerful: it is iterative
+ and handles threading based on values with fully and partially redundant
+ loads.
+
+- The "-memdep" memory dependence analysis pass (used by GVN and memcpyopt) is
+ both faster and more aggressive.
+
+- The "-scalarrepl" scalar replacement of aggregates pass is more aggressive
+ about promoting unions to registers.
+
@@ -430,10 +440,40 @@ The old type legalizer is still available and will be used if
?
+
+how to write a backend doc docs/WritingAnLLVMBackend.html
+asmprinters seperate from targets for jits
+fastisel + exception handling
+vector widening <3 x float> -> <4 x float>
+PBQP register allocator now supports register coalescing.
+
+
+
+
+
New features of the X86 target include:
+
+
+
+non-zero __builtin_return_address values on X86.
+vector shift support + X86 backend.
+x86 JIT now detects core i7 and atom, autoconfiguring itself appropriately.
+x86-64 now uses red zone (unless -mno-red-zone option is specified).
+x86 backend GS segment -> addr space 256 (r62980)
+X86 backend now supports -disable-mmx.
+JIT supports exceptions on linux/x86-64 and linux/x86-64.
+JIT TLS support on x86-32 but not x86-64.
+
+
+
+
@@ -560,7 +600,7 @@ from the previous release.
-- ?
+- llvm-gcc defaults to -fno-math-errno on all x86 targets.
@@ -666,7 +706,7 @@ href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVMdev list.
bugs due to lack of support for the
'u' inline assembly constraint and X87 floating point inline assembly.
The X86-64 backend does not yet support the LLVM IR instruction
- va_arg. Currently, the llvm-gcc front-end supports variadic
+ va_arg. Currently, the llvm-gcc and front-ends support variadic
argument constructs on X86-64 by lowering them manually.