Commit a3783a32 authored by dterei's avatar dterei

Update release notes and docs with LLVM info.

parent 7c086ecd
......@@ -71,7 +71,8 @@ As a rule of thumb, all the language options are dynamic, as are the
warning options and the debugging options.
The rest are static, with the notable exceptions of
.BR \-v ", " \-cpp ", " \-fasm ", " \-fvia\-C ", and " \-#include .
.BR \-v ", " \-cpp ", " \-fasm ", " \-fvia\-C ", " \-fllvm ", and
" \-#include .
The OPTIONS sections lists the status of each flag.
.PP
......
......@@ -49,6 +49,14 @@ $ ghci -package haskell2010 -hide-package base -hide-package array
</para>
</listitem>
<listitem>
<para>
GHC now includes an LLVM code generator. For certain code,
particularly arithmetic heavy code, using the LLVM code
generator can bring some nice performance improvements.
</para>
</listitem>
<listitem>
<para>
The inliner has been overhauled, which should in general
......@@ -351,14 +359,14 @@ import SpecConstr
flags to keep the LLVM intermediate files,
<literal>-keep-llvm-file</literal> and
<literal>-keep-llvm-files</literal>;
flags to set the location and options for the LLVM assembler,
optimiser and compiler,
<literal>-pgmla</literal>,
flags to set the location and options for the LLVM optimiser
and compiler,
<literal>-pgmlo</literal>,
<literal>-pgmlc</literal>,
<literal>-optla</literal>,
<literal>-optlo</literal> and
<literal>-optlc</literal>.
The LLVM code generator requires LLVM version 2.7 or later on
your path.
</para>
</listitem>
......
......@@ -310,6 +310,13 @@
<entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
<entry><option>-keep-llvm-file</option> or
<option>-keep-llvm-files</option></entry>
<entry>retain intermediate LLVM <literal>.ll</literal> files</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
<entry><option>-keep-s-file</option> or
<option>-keep-s-files</option></entry>
......@@ -1721,6 +1728,12 @@ phase <replaceable>n</replaceable></entry>
<entry>dynamic</entry>
<entry>-fasm</entry>
</row>
<row>
<entry><option>-fllvm</option></entry>
<entry>Compile via LLVM</entry>
<entry>dynamic</entry>
<entry>-fasm</entry>
</row>
<row>
<entry><option>-fno-code</option></entry>
<entry>Omit code generation</entry>
......@@ -1948,6 +1961,18 @@ phase <replaceable>n</replaceable></entry>
<entry>Use <replaceable>cmd</replaceable> as the C compiler</entry>
<entry>dynamic</entry>
<entry>-</entry>
<row>
<entry><option>-pgmlo</option> <replaceable>cmd</replaceable></entry>
<entry>Use <replaceable>cmd</replaceable> as the LLVM optimiser</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
<entry><option>-pgmlc</option> <replaceable>cmd</replaceable></entry>
<entry>Use <replaceable>cmd</replaceable> as the LLVM compiler</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
</row>
<row>
<entry><option>-pgmm</option> <replaceable>cmd</replaceable></entry>
......@@ -1999,6 +2024,8 @@ phase <replaceable>n</replaceable></entry>
<indexterm><primary><option>-pgmL</option></primary></indexterm>
<indexterm><primary><option>-pgmP</option></primary></indexterm>
<indexterm><primary><option>-pgmc</option></primary></indexterm>
<indexterm><primary><option>-pgmlo</option></primary></indexterm>
<indexterm><primary><option>-pgmlc</option></primary></indexterm>
<indexterm><primary><option>-pgma</option></primary></indexterm>
<indexterm><primary><option>-pgml</option></primary></indexterm>
<indexterm><primary><option>-pgmdll</option></primary></indexterm>
......@@ -2048,6 +2075,18 @@ phase <replaceable>n</replaceable></entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
<entry><option>-optlo</option> <replaceable>option</replaceable></entry>
<entry>pass <replaceable>option</replaceable> to the LLVM optimiser</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
<entry><option>-optlc</option> <replaceable>option</replaceable></entry>
<entry>pass <replaceable>option</replaceable> to the LLVM compiler</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
<entry><option>-optm</option> <replaceable>option</replaceable></entry>
<entry>pass <replaceable>option</replaceable> to the mangler</entry>
......@@ -2235,6 +2274,12 @@ phase <replaceable>n</replaceable></entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
<entry><option>-ddump-llvm</option></entry>
<entry>Dump LLVM intermediate code</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
<entry><option>-ddump-occur-anal</option></entry>
<entry>Dump occurrence analysis output</entry>
......
This diff is collapsed.
......@@ -440,6 +440,8 @@ $ ghc -c parse/Foo.hs parse/Bar.hs gurgle/Bumble.hs -odir `uname -m`
</indexterm>
<indexterm><primary><literal>.hc</literal> files, saving</primary>
</indexterm>
<indexterm><primary><literal>.ll</literal> files, saving</primary>
</indexterm>
<indexterm><primary><literal>.s</literal> files, saving</primary>
</indexterm>
......@@ -465,6 +467,23 @@ $ ghc -c parse/Foo.hs parse/Bar.hs gurgle/Bumble.hs -odir `uname -m`
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-keep-llvm-file</option>,
<option>-keep-llvm-files</option>
<indexterm><primary><option>-keep-llvm-file</option></primary></indexterm>
<indexterm><primary><option>-keep-llvm-files</option></primary></indexterm>
</term>
<listitem>
<para>Keep intermediate <literal>.ll</literal> files when
doing <literal>.hs</literal>-to-<literal>.o</literal>
compilations via LLVM (NOTE: <literal>.ll</literal> files
aren't generated when using the native code generator, you
may need to use <option>-fllvm</option> to force them
to be produced).</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-keep-s-file</option>,
......
......@@ -151,6 +151,17 @@ should go here!</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Compile via LLVM:</term>
<listitem>
<para>The LLVM code generator can sometimes do a far better job
at producing fast code then either the native code generator
or the C code generator. This is not universal and depends
on the code. Numeric heavy code seems to show the best
improvement when compiled via LLVM.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Compile via C and crank up GCC:</term>
<listitem>
......
......@@ -267,6 +267,22 @@ module X where
</listitem>
</varlistentry>
<varlistentry>
<term><filename>.ll</filename></term>
<listitem>
<para>An llvm-intermediate-language source file, usually
produced by the compiler.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>.bc</filename></term>
<listitem>
<para>An llvm-intermediate-language bitcode file, usually
produced by the compiler.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>.s</filename></term>
<listitem>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment