summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorsimonpj@microsoft.com <unknown>2008-04-11 16:21:37 +0000
committersimonpj@microsoft.com <unknown>2008-04-11 16:21:37 +0000
commit31478ab93794cd2e0e2a389d76caf43a65c8c3aa (patch)
tree301f2208e777c7a7ec2376d0c1fa9611300ad322 /docs
parent27061b5b4008a831eba4784358b040bb1250dcef (diff)
downloadhaskell-31478ab93794cd2e0e2a389d76caf43a65c8c3aa.tar.gz
Revive the static argument transformation
This patch revives the Static Argument Transformation, thanks to Max Bolingbroke. It is enabled with -fstatic-argument-transformation or -O2 Headline nofib results Size Allocs Runtime Min +0.0% -13.7% -21.4% Max +0.1% +0.0% +5.4% Geometric Mean +0.0% -0.2% -6.9%
Diffstat (limited to 'docs')
-rw-r--r--docs/users_guide/flags.xml7
-rw-r--r--docs/users_guide/using.xml30
2 files changed, 30 insertions, 7 deletions
diff --git a/docs/users_guide/flags.xml b/docs/users_guide/flags.xml
index 21807d7f6a..47b51a8298 100644
--- a/docs/users_guide/flags.xml
+++ b/docs/users_guide/flags.xml
@@ -1341,6 +1341,13 @@
</row>
<row>
+ <entry><option>-fstatic-argument-transformation</option></entry>
+ <entry>Turn on the static argument transformation. Implied by <option>-O2</option>.</entry>
+ <entry>dynamic</entry>
+ <entry>-fno-static-argument-transformation</entry>
+ </row>
+
+ <row>
<entry><option>-fliberate-case-threshold</option>=<replaceable>n</replaceable></entry>
<entry>Set the size threshold for the liberate-case transformation to <replaceable>n</replaceable> (default: 200)</entry>
<entry>static</entry>
diff --git a/docs/users_guide/using.xml b/docs/users_guide/using.xml
index c12f76b7c7..21e5205022 100644
--- a/docs/users_guide/using.xml
+++ b/docs/users_guide/using.xml
@@ -1522,15 +1522,31 @@ f "2" = 2
<varlistentry>
<term>
- <option>-fno-state-hack</option>
- <indexterm><primary><option>-fno-state-hack</option></primary></indexterm>
+ <option>-fspec-constr</option>
+ <indexterm><primary><option>-fspec-constr</option></primary></indexterm>
</term>
<listitem>
- <para>Turn off the "state hack" whereby any lambda with a
- <literal>State#</literal> token as argument is considered to be
- single-entry, hence it is considered OK to inline things inside
- it. This can improve performance of IO and ST monad code, but it
- runs the risk of reducing sharing.</para>
+ <para>Turn on call-pattern specialisation.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>-fliberate-case</option>
+ <indexterm><primary><option>-fliberate-case</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>Turn on the liberate-case transformation.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>-fstatic-argument-transformation</option>
+ <indexterm><primary><option>-fstatic-argument-transformation</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>Turn on the static argument transformation.</para>
</listitem>
</varlistentry>