From b82eb06faf5c67bc906d10d5f36c3727f3806d05 Mon Sep 17 00:00:00 2001
From: Chris Lattner
Date: Mon, 13 Oct 2008 20:47:20 +0000
Subject: [PATCH] describe major new features and llvm-gcc features.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57463 91177308-0d34-0410-b5e6-96231b3b80d8
---
docs/ReleaseNotes.html | 67 +++++++++++++++++++++++++++---------------
1 file changed, 44 insertions(+), 23 deletions(-)
diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html
index 146f4d2134e..fa926eb9849 100644
--- a/docs/ReleaseNotes.html
+++ b/docs/ReleaseNotes.html
@@ -156,21 +156,25 @@ in this section.
LLVM 2.4 includes several major new capabilities:
--
-
MRVs got generalized to FCAs. getresult is gone, ret with multiple values
- is gone.
-
-
--O0 compile times overall much faster
-
-Attrs changes?
-
-
-Initial PIC16 port
-
- Support the rest of the atomic __sync builtins
-
-...
+The most visible end-user change in LLVM 2.4 is that it includes many
+optimizations and changes ot make -O0 compile times much faster. You should see
+improvements on the order of 30% or more faster than LLVM 2.3. There are many
+pieces to this change, described in more detail below. The speedups and new
+components can also be used for JIT compilers that want fast compilation as
+well.
+
+The biggest change to the LLVM IR is that Multiple Return Values (which
+were introduced in LLVM 2.3) have been generalized to full support for "First
+Class Aggregate" values in LLVM 2.4. This means that LLVM IR supports using
+structs and arrays as values in a function. This capability is mostly useful
+for front-end authors, who prefer to treat things like complex numbers, simple
+tuples, dope vectors, etc as Value*'s instead of as a tuple of Value*'s or as
+memory values.
+
+LLVM 2.4 also includes an initial port for the PIC16 microprocessor. This
+is the LLVM targer that only has support for 8 bit registers, and a number of
+other crazy constraints. While the port is still in early development stages,
+it shows some interesting things you can do with LLVM.
@@ -184,16 +188,32 @@ in this section.
-
LLVM 2.4 fully supports the llvm-gcc 4.2 front-end, and includes support
-for the C, C++, Objective-C, Ada, and Fortran front-ends.
+
LLVM fully supports the llvm-gcc 4.2 front-end, which marries the GCC
+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.
-
-- block-pointers
-
-
- alpha?
-
-
- -flimited-precision
-- -flto
-
+- LLVM 2.4 supports the full set of atomic __sync builtins. LLVM 2.3 only
+supported those used by OpenMP, but 2.4 supports them all. Not all targets
+support all builtins, but X86 and PowerPC do.
+
+- llvm-gcc now supports an -flimited-precision option, which tells the
+compiler that it is ok to use low-precision approximations of certain libm
+functions (like tan, log, etc). This allows you to get high performance if you
+only need (say) 14-bits of precision.
+
+- llvm-gcc now supports a C language extension known as "Blocks
+. This feature is similar to nested functions and closures, but does not
+require stack trampolines (with most ABIs) and supports returning closures
+from functions that define them. Note that actually using Blocks
+requires a small runtime that is not included with llvm-gcc.
+
+- llvm-gcc now supports a new -flto option. On systems that support
+transparent Link Time Optimization (currently Darwin systems with Xcode 3.1 and
+later) this allows the use of LTO with other optimization levels like -Os.
+Previously, LTO could only be used with -O4, which implied optimizations in
+-O3 that can increase code size.
@@ -216,6 +236,7 @@ for the C, C++, Objective-C, Ada, and Fortran front-ends.
DebugInfoBuilder
.ll printing format change: %3 = add i32 4, 2
opt-size, noinline, alwaysinline function attributes
+Attrs: function, return, param.
...
--
2.34.1