From: Chris Lattner This document contains the release notes for the LLVM compiler
-infrastructure, release 2.0. Here we describe the status of LLVM, including
+infrastructure, release 2.1. Here we describe the status of LLVM, including
major improvements from the previous release and any known problems. All LLVM
releases may be downloaded from the LLVM
releases web site. Note that if you are reading this file from a Subversion checkout or the
-main LLVM web page,
-this document applies to the next release, not the current one. To see
-the release notes for the current or previous releases, see the releases page.
This is the eleventh public release of the LLVM Compiler Infrastructure. -Being the first major release since 1.0, this release is different in several -ways from our previous releases:
- -Note that while this is a major version bump, this release has been - extensively tested on a wide range of software. It is easy to say that this - is our best release yet, in terms of both features and correctness. This is - the first LLVM release to correctly compile and optimize major software like - LLVM itself, Mozilla/Seamonkey, Qt 4.3rc1, kOffice, etc out of the box on - linux/x86. -
+This is the twelfth public release of the LLVM Compiler Infrastructure. +It includes many features and refinements from LLVM 2.0.
Changes to the LLVM IR itself:
+LLVM 2.1 brings two new beta C front-ends. First, Duncan, Anton and Devang +start syncing up llvm-gcc with GCC 4.2, yielding "llvm-gcc 4.2" (creative, +huh?). llvm-gcc 4.2 has the promise to bring much better FORTRAN and Ada +support to LLVM as well as features like atomic builtins, OpenMP, and many other +things. Check it out!
-Second, LLVM now includes its own native C and Objective-C front-end (C++ is +in progress, but is not very far along) code named "clang". This front-end has a number of great +features, primarily aimed at source-level analysis and speeding up compile-time. +At this point though, the LLVM Code Generator component is still very early in +development, so it's mostly useful for people looking to build source-level +analysis tools or source-to-source translators.
-Major new features:
+ + -Some of the most noticable improvements this release have been in the +optimizer, speeding it up and making it more aggressive
-New features include: -
+ +foo
New features include:
-New features include: +
New features include:
-Other improvements include: -
- -In addition, the LLVM target description format has itself been extended in - several ways:
- -X86-specific Code Generator Enhancements: +
New features include:
ARM-specific Code Generator Enhancements:
- -PowerPC-specific Code Generator Enhancements:
- -More specific changes include:
+New features include: +
LLVM 2.0 contains a revamp of the type system and several other significant -internal changes. If you are programming to the C++ API, be aware of the -following major changes:
- -- Value *Ops[] = { Op1, Op2, Op3 }; - GEP = new GetElementPtrInst(BasePtr, Ops, 3); -- - This avoids creation of a temporary vector (and a call to malloc/free). If - you have an std::vector, use code like this: -
- std::vector<Value*> Ops = ...; - GEP = new GetElementPtrInst(BasePtr, &Ops[0], Ops.size()); -- -