From: Chris Lattner 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. 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.
-
@@ -184,16 +188,32 @@ in this section.
-