<varlistentry>
<term>
+ <option>-ddump-rule-firings</option>:
+ <indexterm><primary><option>-ddump-rule-firings</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>dumps the names of all rules that fired in this module</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>-ddump-rule-rewrites</option>:
+ <indexterm><primary><option>-ddump-rule-rewrites</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>dumps detailed information about all rules that fired in
+ this module
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>-ddump-vect</option>:
+ <indexterm><primary><option>-ddump-vect</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>dumps the output of the vectoriser.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
<option>-ddump-simpl</option>:
<indexterm><primary><option>-ddump-simpl</option></primary></indexterm>
</term>
</varlistentry>
<varlistentry>
- <term>
+ <term>
<option>-ddump-tc-trace</option>
<indexterm><primary><option>-ddump-tc-trace</option></primary></indexterm>
</term>
- <listitem>
- <para>Make the type checker be *real* chatty about what it is
- upto.</para>
- </listitem>
+ <listitem>
+ <para>Make the type checker be *real* chatty about what it is
+ upto.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>-ddump-vt-trace</option>
+ <indexterm><primary><option>-ddump-tv-trace</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>Make the vectoriser be *real* chatty about what it is
+ upto.</para>
+ </listitem>
</varlistentry>
<varlistentry>
<varlistentry>
<term>
+ <option>-ddump-core-stats</option>
+ <indexterm><primary><option>-ddump-core-stats</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>Print a one-line summary of the size of the Core program
+ at the end of the optimisation pipeline.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
<option>-dfaststring-stats</option>
<indexterm><primary><option>-dfaststring-stats</option></primary></indexterm>
</term>
style.</para>
</listitem>
</varlistentry>
+ </variablelist>
+ </sect2>
+ <sect2 id="formatting dumps">
+ <title>Formatting dumps</title>
+
+ <indexterm><primary>formatting dumps</primary></indexterm>
+
+ <variablelist>
<varlistentry>
<term>
- <option>-dsuppress-uniques</option>
- <indexterm><primary><option>-dsuppress-uniques</option></primary></indexterm>
+ <option>-dppr-user-length</option>
+ <indexterm><primary><option>-dppr-user-length</option></primary></indexterm>
</term>
<listitem>
- <para>Suppress the printing of uniques in debugging output. This may make
- the printout ambiguous (e.g. unclear where an occurrence of 'x' is bound), but
- it makes the output of two compiler runs have many fewer gratuitous differences,
- so you can realistically apply <command>diff</command>. Once <command>diff</command>
- has shown you where to look, you can try again without <option>-dsuppress-uniques</option></para>
+ <para>In error messages, expressions are printed to a
+ certain “depth”, with subexpressions beyond the
+ depth replaced by ellipses. This flag sets the
+ depth. Its default value is 5.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
- <option>-dsuppress-coercions</option>
- <indexterm><primary><option>-dsuppress-coercions</option></primary></indexterm>
+ <option>-dppr-colsNNN</option>
+ <indexterm><primary><option>-dppr-colsNNN</option></primary></indexterm>
</term>
<listitem>
- <para>Suppress the printing of coercions in Core dumps to make them
-shorter.</para>
+ <para>Set the width of debugging output. Use this if your code is wrapping too much.
+ For example: <option>-dppr-cols200</option>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
- <option>-dppr-user-length</option>
- <indexterm><primary><option>-dppr-user-length</option></primary></indexterm>
+ <option>-dppr-case-as-let</option>
+ <indexterm><primary><option>-dppr-case-as-let</option></primary></indexterm>
</term>
<listitem>
- <para>In error messages, expressions are printed to a
- certain “depth”, with subexpressions beyond the
- depth replaced by ellipses. This flag sets the
- depth. Its default value is 5.</para>
+ <para>Print single alternative case expressions as though they were strict
+ let expressions. This is helpful when your code does a lot of unboxing.</para>
</listitem>
</varlistentry>
turn it off.</para>
</listitem>
</varlistentry>
+ </variablelist>
+
+ </sect2>
+
+ <sect2 id="supression">
+ <title>Suppressing unwanted information</title>
+
+ <indexterm><primary>suppression</primary></indexterm>
+
+ Core dumps contain a large amount of information. Depending on what you are doing, not all of it will be useful.
+ Use these flags to suppress the parts that you are not interested in.
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ <option>-dsuppress-all</option>
+ <indexterm><primary><option>-dsuppress-all</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>Suppress everything that can be suppressed, except for unique ids as this often
+ makes the printout ambiguous. If you just want to see the overall structure of
+ the code, then start here.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>-dsuppress-uniques</option>
+ <indexterm><primary><option>-dsuppress-uniques</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>Suppress the printing of uniques. This may make
+ the printout ambiguous (e.g. unclear where an occurrence of 'x' is bound), but
+ it makes the output of two compiler runs have many fewer gratuitous differences,
+ so you can realistically apply <command>diff</command>. Once <command>diff</command>
+ has shown you where to look, you can try again without <option>-dsuppress-uniques</option></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>-dsuppress-idinfo</option>
+ <indexterm><primary><option>-dsuppress-idinfo</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>Suppress extended information about identifiers where they are bound. This includes
+ strictness information and inliner templates. Using this flag can cut the size
+ of the core dump in half, due to the lack of inliner templates</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>-dsuppress-module-prefixes</option>
+ <indexterm><primary><option>-dsuppress-module-prefixes</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>Suppress the printing of module qualification prefixes.
+ This is the <constant>Data.List</constant> in <constant>Data.List.length</constant>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>-dsuppress-type-signatures</option>
+ <indexterm><primary><option>-dsuppress-type-signatures</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>Suppress the printing of type signatures.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>-dsuppress-type-applications</option>
+ <indexterm><primary><option>-dsuppress-type-applications</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>Suppress the printing of type applications.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>-dsuppress-coercions</option>
+ <indexterm><primary><option>-dsuppress-coercions</option></primary></indexterm>
+ </term>
+ <listitem>
+ <para>Suppress the printing of type coercions.</para>
+ </listitem>
+ </varlistentry>
</variablelist>
</sect2>
<!-- Emacs stuff:
;;; Local Variables: ***
- ;;; mode: xml ***
;;; sgml-parent-document: ("users_guide.xml" "book" "chapter" "sect1") ***
;;; End: ***
-->