summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-06-08 21:34:41 +0000
committerChris Lattner <sabre@nondot.org>2008-06-08 21:34:41 +0000
commitea34f64b8d66a0df041b35998b21c3d1e70d4e8c (patch)
tree6b4fab3c23fecbe0afea41d8104a1924351566ae /docs
parente6e1b35acd1ba59abf97a62dabe7a237bdeb8bbd (diff)
downloadllvm-ea34f64b8d66a0df041b35998b21c3d1e70d4e8c.tar.gz
llvm-ea34f64b8d66a0df041b35998b21c3d1e70d4e8c.tar.bz2
llvm-ea34f64b8d66a0df041b35998b21c3d1e70d4e8c.tar.xz
start edits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52100 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs')
-rw-r--r--docs/ReleaseNotes.html130
1 files changed, 82 insertions, 48 deletions
diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html
index 1bc96bd07a..afa0619f31 100644
--- a/docs/ReleaseNotes.html
+++ b/docs/ReleaseNotes.html
@@ -79,71 +79,114 @@ It includes a large number of features and refinements from LLVM 2.2.</p>
<div class="doc_text">
-<p>LLVM 2.2 was the last LLVM release to support llvm-gcc 4.0 and llvm-upgrade.
-llvm-gcc 4.0 has been replaced with llvm-gcc 4.2. llvm-upgrade was useful for
-upgrading LLVM 1.9 files to LLVM 2.x syntax, but you can always use a previous
-LLVM release to do this. One nice impact of this is that the LLVM regression
-test suite no longer depends on llvm-upgrade, which makes it run faster.</p>
+<p>LLVM 2.3 no longer supports llvm-gcc 4.0, it has been replaced with
+ llvm-gcc 4.2.</p>
-<p><tt>llvm2cpp</tt> tool has been folded into llc, use
+<p>LLVM 2.3 no longer includes the <tt>llvm-upgrade</tt> tool. It was useful
+ for upgrading LLVM 1.9 files to LLVM 2.x syntax, but you can always use a
+ previous LLVM release to do this. One nice impact of this is that the LLVM
+ regression test suite no longer depends on llvm-upgrade, which makes it run
+ faster.</p>
+
+<p>The <tt>llvm2cpp</tt> tool has been folded into llc, use
<tt>llc -march=cpp</tt> instead of <tt>llvm2cpp</tt>.</p>
<p>LLVM API Changes:</p>
<ul>
-<li>Several core LLVM IR classes have migrated to use 'FOOCLASS::Create(...)'
- instead of 'new FOOCLASS(...)' (e.g. where FOOCLASS=BasicBlock). We hope to
- standardize on FOOCLASS::Create for all IR classes in the future, but not
- all of them have been moved over yet.</li>
+<li>Several core LLVM IR classes have migrated to use the
+ '<tt>FOOCLASS::Create(...)</tt>' pattern instead of '<tt>new
+ FOOCLASS(...)</tt>' (e.g. where FOOCLASS=<tt>BasicBlock</tt>). We hope to
+ standardize on <tt>FOOCLASS::Create</tt> for all IR classes in the future,
+ but not all of them have been moved over yet.</li>
<li>LLVM 2.3 renames the LLVMBuilder and LLVMFoldingBuilder classes to
IRBuilder.</li>
<li>MRegisterInfo was renamed to TargetRegisterInfo.</li>
<li>The MappedFile class is gone, please use MemoryBuffer instead.</li>
-<li>The '-enable-eh' flag to llc has been removed. Now code should encode
- whether it is safe to not generate unwind information for a function by
- tagging the Function object with the 'nounwind' attribute.</li>
+<li>The '<tt>-enable-eh</tt>' flag to llc has been removed. Now code should
+ encode whether it is safe to omit unwind information for a function by
+ tagging the Function object with the '<tt>nounwind</tt>' attribute.</li>
</ul>
</div>
<!--=========================================================================-->
<div class="doc_subsection">
-<a name="majorfeatures">Major New Features</a>
+<a name="otherprojects">Other LLVM Sub-Projects</a>
</div>
<div class="doc_text">
-<p>LLVM 2.3 includes several major new capabilities:</p>
-
-<ul>
-<li>Multiple Return Value Support.</li>
-
+<p>
+<p>The <a href="http://clang.llvm.org/">clang project</a> is an effort to build
+a set of new 'llvm native' front-end technologies for the LLVM optimizer
+and code generator. Currently, its C and Objective-C support is maturing
+nicely, and it has advanced source-to-source analysis and transformation
+capabilities. If you are interested in building source-level tools for C and
+Objective-C (and eventually C++), you should take a look. However, note that
+clang is not an official part of the LLVM 2.3 release. If you are interested in
+this project, please see its <a href="http://clang.llvm.org/">web site</a>.</p>
-<li><p>LLVM 2.3 includes a complete reimplementation of the "llvmc" tool. It is
-designed to overcome several problems with the original llvmc and to provide a
-superset of the features of the 'gcc' driver.</p>
-<p>The main features of llvmc2 is:</p>
+</p>
-<ul>
-<li>Extended handling of command line options and smart rules for
-dispatching them to different tools.</li>
-<li>Flexible (and extensible) rules for defining different tools.</li>
-<li>The different intermediate steps performed by tools are represented
-as edges in the abstract graph.</li>
-<li>The 'language' for driver behavior definition is tablegen and thus
-it's relatively easy to add new features.</li>
-<li>The definition of driver is transformed into set of C++ classes, thus
-no runtime interpretation is needed.</li>
-</ul>
-</li>
+</div>
+<!--=========================================================================-->
+<div class="doc_subsection">
+<a name="majorfeatures">Major New Features</a>
+</div>
-<li>Reimplemented <a href="LinkTimeOptimization.html">LTO interface</a> in
- C.</li>
+<div class="doc_text">
+<p>LLVM 2.3 includes several major new capabilities:</p>
-<li>Kaleidoscope tutorial in Ocaml.</li>
+<ul>
+<li><p>The biggest change in LLVM 2.3 is Multiple Return Value (MRV) support.
+ MRVs allow LLVM IR to directly represent functions that return multiple
+ values without having to pass them "by reference" in the LLVM IR. This
+ allows a front-end to generate more efficient code, as MRVs are generally
+ returned in registers if a target supports them. See the <a
+ href="LangRef.html#i_getresult">LLVM IR Reference</a> for more details.</p>
+
+ <p>MRVs are fully supported in the LLVM IR, but are not yet fully supported in
+ on all targets. However, it is generally safe to return up to 2 values from
+ a function: most targets should be able to handle at least that. MRV
+ support is a critical requirement for X86-64 ABI support, as X86-64 requires
+ the ability to return multiple registers from functions, and we use MRVs to
+ accomplish this in a direct way.</p></li>
+
+
+<li><p>LLVM 2.3 includes a complete reimplementation of the "<tt>llvmc</tt>"
+ tool. It is designed to overcome several problems with the original
+ <tt>llvmc</tt> and to provide a superset of the features of the
+ '<tt>gcc</tt>' driver.</p>
+
+<p>The main features of <tt>llvmc2</tt> are:
+ <ul>
+ <li>Extended handling of command line options and smart rules for
+ dispatching them to different tools.</li>
+ <li>Flexible (and extensible) rules for defining different tools.</li>
+ <li>The different intermediate steps performed by tools are represented
+ as edges in the abstract graph.</li>
+ <li>The 'language' for driver behavior definition is tablegen and thus
+ it's relatively easy to add new features.</li>
+ <li>The definition of driver is transformed into set of C++ classes, thus
+ no runtime interpretation is needed.</li>
+ </ul></p>
+ </li>
+
+
+<li><p>LLVM 2.3 includes a completely rewritten interface for <a
+ href="LinkTimeOptimization.html">Link Time Optimization</a>. This interface
+ is written in C, which allows for easier integration with C code bases, and
+ incorporates improvements we learned about from the first incarnation of the
+ interface.</p></li>
+
+<li><p>The <a href="tutorial/LangImpl1.html">Kaleidoscope tutorial</a> now
+ includes a "port" of the tutorial that <a
+ href="tutorial/OCamlLangImpl1.html">uses the Ocaml bindings</a> to implement
+ the Kaleidoscope language.</p></li>
</ul>
@@ -152,7 +195,7 @@ no runtime interpretation is needed.</li>
<!--=========================================================================-->
<div class="doc_subsection">
-<a name="frontends">llvm-gcc 4.2 Improvements and Clang</a>
+<a name="llvm-gcc">llvm-gcc 4.2 Improvements</a>
</div>
<div class="doc_text">
@@ -165,15 +208,6 @@ front-end. Objective-C now works very well on Mac OS/X.</p>
<p>llvm-gcc 4.2 includes many other fixes which improve conformance with the
relevant parts of the GCC testsuite.</p>
-<p>The <a href="http://clang.llvm.org/">clang project</a> is an effort to build
-a set of new 'llvm native' front-end technologies for the LLVM optimizer
-and code generator. Currently, its C and Objective-C support is maturing
-nicely, and it has advanced source-to-source analysis and transformation
-capabilities. If you are interested in building source-level tools for C and
-Objective-C (and eventually C++), you should take a look. However, note that
-clang is not an official part of the LLVM 2.3 release. If you are interested in
-this project, please see its <a href="http://clang.llvm.org/">web site</a>.</p>
-
</div>