<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta encoding="utf8">
<link rel="stylesheet" href="llvm.css" type="text/css">
<title>LLVM 2.9 Release Notes</title>
</head>
</ol>
<div class="doc_author">
- <p>Written by the <a href="http://llvm.org">LLVM Team</a></p>
+ <p>Written by the <a href="http://llvm.org/">LLVM Team</a></p>
</div>
<!--
also brought in a large range of bug fixes and minor features (e.g. __label__
support), and is much more compatible with the Linux Kernel.</p>
-<p>If Clang rejects your code that is built with another compiler, please take a
+<p>If Clang rejects your code but another compiler accepts it, please take a
look at the <a href="http://clang.llvm.org/compatibility.html">language
-compatibility</a> guide to make sure the issue isn't intentional or a known
-issue.
+compatibility</a> guide to make sure this is not intentional or a known issue.
</p>
-<ul>
-</ul>
</div>
<!--=========================================================================-->
</div>
+<!--=========================================================================-->
+<h2>
+<a name="LLBrowse">LLBrowse: IR Browser</a>
+</h2>
+
+<div class="doc_text">
+<p>
+<a href="http://llvm.org/svn/llvm-project/llbrowse/trunk/doc/LLBrowse.html">
+ LLBrowse</a> is an interactive viewer for LLVM modules. It can load any LLVM
+ module and displays its contents as an expandable tree view, facilitating an
+ easy way to inspect types, functions, global variables, or metadata nodes. It
+ is fully cross-platform, being based on the popular wxWidgets GUI toolkit.
+</p>
+</div>
+<!--=========================================================================-->
+<h2>
+<a name="vmkit">VMKit</a>
+</h2>
+
+<div class="doc_text">
+<p>The <a href="http://vmkit.llvm.org/">VMKit project</a> is an implementation
+ of a Java Virtual Machine (Java VM or JVM) that uses LLVM for static and
+ just-in-time compilation. As of LLVM 2.9, VMKit now supports generational
+ garbage collectors. The garbage collectors are provided by the MMTk framework,
+ and VMKit can be configured to use one of the numerous implemented collectors
+ of MMTk.
+</p>
+</div>
+
+
<!--=========================================================================-->
<!--
<h2>
and parallelism.</p>
</div>
+<!--=========================================================================-->
+<h2>Rubinius</h2>
+
+<div class="doc_text">
+ <p><a href="http://github.com/evanphx/rubinius">Rubinius</a> is an environment
+ for running Ruby code which strives to write as much of the implementation in
+ Ruby as possible. Combined with a bytecode interpreting VM, it uses LLVM to
+ optimize and compile ruby code down to machine code. Techniques such as type
+ feedback, method inlining, and deoptimization are all used to remove dynamism
+ from ruby execution and increase performance.</p>
+</div>
+
+
+<!--=========================================================================-->
+<div class="doc_subsection">
+<a name="FAUST">FAUST Real-Time Audio Signal Processing Language</a>
+</div>
+<div class="doc_text">
+<p>
+<a href="http://faust.grame.fr">FAUST</a> is a compiled language for real-time
+audio signal processing. The name FAUST stands for Functional AUdio STream. Its
+programming model combines two approaches: functional programming and block
+diagram composition. In addition with the C, C++, JAVA output formats, the
+Faust compiler can now generate LLVM bitcode, and works with LLVM 2.7-2.9.</p>
+
+</div>
+
<!-- *********************************************************************** -->
<h1>
<a name="whatsnew">What's New in LLVM 2.9?</a>
simplify expressions, perform simple dead store elimination, and perform
common subexpression elimination. It does a good job at catching some of the
trivial redundancies that exist in unoptimized code, making later passes more
- effective.<,/li>
+ effective.</li>
<li>A new -loop-instsimplify pass is used to clean up loop bodies in the loop
optimizer.</li>
The reimplementation uses a new LLVM IR <a
href="LangRef.html#t_x86mmx">x86_mmx</a> type to ensure that MMX operations
are <em>only</em> generated from source that uses MMX builtin operations. With
- this, random types like <2 x i32> are not turned into to MMX operations
+ this, random types like <2 x i32> are not turned into MMX operations
(which can be catastrophic without proper "emms" insertion). Because the X86
code generator always generates reliable code, the -disable-mmx flag is now
removed.
multiplications and addition of a simple delay slot filler.</li>
<li>PowerPC: The backend has been largely MC'ized and is ready to support
- directly writing out mach-o object files. Noone seems interested in finishing
+ directly writing out mach-o object files. No one seems interested in finishing
this final step though.</li>
-
+
+<li>Mips: Improved o32 ABI support, including better varags handling.
+More instructions supported in codegen: madd, msub, rotr, rotrv and clo.
+It also now supports lowering block addresses.</li>
+
</ul>
</div>
<li>The LoopIndexSplit, LiveValues, SimplifyHalfPowrLibCalls, GEPSplitter, and
PartialSpecialization passes were removed. They were unmaintained,
- buggy, or decided to be a bad idea.</li>
+ buggy, or deemed to be a bad idea.</li>
</ul>
</div>
<div class="doc_text">
<p>A wide variety of additional information is available on the <a
-href="http://llvm.org">LLVM web page</a>, in particular in the <a
+href="http://llvm.org/">LLVM web page</a>, in particular in the <a
href="http://llvm.org/docs/">documentation</a> section. The web page also
contains versions of the API documentation which is up-to-date with the
Subversion version of the source code.