<entry>-</entry>
</row>
<row>
+ <entry><option>-n</option></entry>
+ <entry>do a dry run</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-v</option></entry>
<entry>verbose mode (equivalent to <option>-v3</option>)</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
+ <entry><option>-H</option><replaceable>size</replaceable></entry>
+ <entry>Set the minimum heap size to <replaceable>size</replaceable></entry>
+ <entry>static</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-Rghc-timing</option></entry>
<entry>Summarise timing stats for GHC (same as <literal>+RTS -tstderr</literal>)</entry>
<entry>static</entry>
<tbody>
<row>
<entry><option>--interactive</option></entry>
- <entry>Interactive mode - normally used by just running <command>ghci</command></entry>
+ <entry>Interactive mode - normally used by just running <command>ghci</command>;
+ see <xref linkend="ghci"/> for details.</entry>
<entry>mode</entry>
<entry>-</entry>
</row>
<row>
<entry><option>--make</option></entry>
- <entry>Build a multi-module Haskell program, automatically figuring out dependencies. Likely to be much easier, and faster, than using <command>make</command>.</entry>
+ <entry>Build a multi-module Haskell program, automatically figuring out dependencies. Likely to be much easier, and faster, than using <command>make</command>;
+ see <xref linkend="make-mode"/> for details..</entry>
<entry>mode</entry>
<entry>-</entry>
</row>
<row>
<entry><option>-e <replaceable>expr</replaceable></option></entry>
- <entry>Evaluate <replaceable>expr</replaceable></entry>
+ <entry>Evaluate <replaceable>expr</replaceable>;
+ see <xref linkend="eval-mode"/> for details.</entry>
<entry>mode</entry>
<entry>-</entry>
</row>
<row>
<entry><option>-M</option></entry>
- <entry>Generate dependency information suitable for use in a <filename>Makefile</filename>.</entry>
+ <entry>Generate dependency information suitable for use in a <filename>Makefile</filename>;
+ see <xref linkend="makefile-dependencies"/> for details.</entry>
<entry>mode</entry>
<entry>-</entry>
</row>
<entry><option>-i</option><replaceable>dir1</replaceable>:<replaceable>dir2</replaceable>:...</entry>
<entry>add <replaceable>dir</replaceable>,
<replaceable>dir2</replaceable>, etc. to import path</entry>
- <entry>dynamic</entry>
+ <entry>static/<literal>:set</literal></entry>
<entry>-</entry>
</row>
<row>
<entry><option>-i</option></entry>
<entry>Empty the import directory list</entry>
- <entry>dynamic</entry>
+ <entry>static/<literal>:set</literal></entry>
<entry>-</entry>
</row>
</tbody>
<entry>static</entry>
<entry>-</entry>
</row>
+ <row>
+ <entry><option>-fdebugging</option></entry>
+ <entry>Generate bytecode enabled for debugging</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
+ <entry><option>-fno-debugging</option></entry>
+ <entry>Do not include debugging information in bytecodes</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
+ <entry><option>-fno-print-bind-result</option></entry>
+ <entry><link linkend="ghci-stmts">Turn off printing of binding results in GHCi</link></entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
</tbody>
</tgroup>
</informaltable>
</thead>
<tbody>
<row>
+ <entry><option>-package-name</option> <replaceable>P</replaceable></entry>
+ <entry>Compile to be part of package <replaceable>P</replaceable></entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-package</option> <replaceable>P</replaceable></entry>
<entry>Expose package <replaceable>P</replaceable></entry>
- <entry>dynamic</entry>
+ <entry>static/<literal>:set</literal></entry>
<entry>-</entry>
</row>
<row>
<row>
<entry><option>-hide-package</option> <replaceable>name</replaceable></entry>
<entry>Hide package <replaceable>P</replaceable></entry>
- <entry>dynamic</entry>
+ <entry>static/<literal>:set</literal></entry>
<entry>-</entry>
</row>
<row>
<entry><option>-ignore-package</option> <replaceable>name</replaceable></entry>
<entry>Ignore package <replaceable>P</replaceable></entry>
- <entry>dynamic</entry>
+ <entry>static/<literal>:set</literal></entry>
<entry>-</entry>
</row>
<row>
<entry><option>-package-conf</option> <replaceable>file</replaceable></entry>
<entry>Load more packages from <replaceable>file</replaceable></entry>
- <entry>dynamic</entry>
+ <entry>static</entry>
<entry>-</entry>
</row>
<row>
<entry><option>-no-user-package-conf</option></entry>
<entry>Don't load the user's package config file.</entry>
- <entry>dynamic</entry>
+ <entry>static</entry>
<entry>-</entry>
</row>
</tbody>
<entry><option>-fno-extended-default-rules</option></entry>
</row>
<row>
+ <entry><option>-foverloaded-strings</option></entry>
+ <entry>Enable <link linkend="overloaded-strings">overloaded string literals</link>.
+ </entry>
+ <entry>dynamic</entry>
+ <entry><option>-fno-overloaded-strings</option></entry>
+ </row>
+ <row>
<entry><option>-fscoped-type-variables</option></entry>
<entry>Enable <link linkend="scoped-type-variables">lexically-scoped type variables</link>.
Implied by <option>-fglasgow-exts</option>.</entry>
<entry><option>-fno-th</option></entry>
</row>
<row>
+ <entry><option>-ftype-families</option></entry>
+ <entry>Enable <link linkend="type-families">type families</link>.</entry>
+ <entry>dynamic</entry>
+ <entry><option>-fno-type-families</option></entry>
+ </row>
+ <row>
<entry><option>-fbang-patterns</option></entry>
- <entry>Enable <link linkend="sec-bang-patterns">bang patterns</link>.</entry>
+ <entry>Enable <link linkend="bang-patterns">bang patterns</link>.</entry>
<entry>dynamic</entry>
<entry><option>-fno-bang-patterns</option></entry>
</row>
</row>
<row>
<entry><option>-Wall</option></entry>
- <entry>enable all warnings</entry>
+ <entry>enable almost all warnings (details in <xref linkend="options-sanity"/>)</entry>
<entry>dynamic</entry>
<entry><option>-w</option></entry>
</row>
<entry><option>-fno-warn-hi-shadowing</option></entry>
</row>
+ <row>
+ <entry><option>-fwarn-implicit-prelude</option></entry>
+ <entry>warn when the Prelude is implicitly imported</entry>
+ <entry>dynamic</entry>
+ <entry><option>-fno-warn-implicit-prelude</option></entry>
+ </row>
+
<row>
<entry><option>-fwarn-incomplete-patterns</option></entry>
<entry>warn when a pattern match could fail</entry>
</row>
<row>
+ <entry><option>-fwarn-tabs</option></entry>
+ <entry>warn if there are tabs in the source file</entry>
+ <entry>dynamic</entry>
+ <entry><option>-fno-warn-tabs</option></entry>
+ </row>
+
+ <row>
<entry><option>-fwarn-type-defaults</option></entry>
<entry>warn when defaulting happens</entry>
<entry>dynamic</entry>
</row>
<row>
+ <entry><option>-fwarn-monomorphism-restriction</option></entry>
+ <entry>warn when the Monomorphism Restriction is applied</entry>
+ <entry>dynamic</entry>
+ <entry><option>-fno-warn-monomorphism-restriction</option></entry>
+ </row>
+
+ <row>
<entry><option>-fwarn-unused-binds</option></entry>
<entry>warn about bindings that are unused</entry>
<entry>dynamic</entry>
<tbody>
<row>
<entry><option>-fcase-merge</option></entry>
- <entry>Enable case-merging</entry>
+ <entry>Enable case-merging. Implied by <option>-O</option>.</entry>
<entry>dynamic</entry>
<entry><option>-fno-case-merge</option></entry>
</row>
<row>
<entry><option>-fdo-eta-reduction</option></entry>
- <entry>Enable eta-reduction</entry>
+ <entry>Enable eta-reduction. Implied by <option>-O</option>.</entry>
<entry>dynamic</entry>
<entry><option>-fno-do-eta-reduction</option></entry>
</row>
</row>
<row>
- <entry><option>-frules-off</option></entry>
- <entry>Switch off all rewrite rules (including rules
- generated by automatic specialisation of overloaded functions)</entry>
- <entry>static</entry>
- <entry><option>-frules-off</option></entry>
- </row>
-
- <row>
<entry><option>-fignore-asserts</option></entry>
<entry>Ignore assertions in the source</entry>
<entry>dynamic</entry>
</row>
<row>
- <entry><option>-fliberate-case-threshold</option></entry>
- <entry>Tweak the liberate-case optimisation (default: 10)</entry>
- <entry>static</entry>
- <entry><option>-fno-liberate-case-threshold</option></entry>
- </row>
-
- <row>
<entry><option>-fomit-interface-pragmas</option></entry>
<entry>Don't generate interface pragmas</entry>
<entry>dynamic</entry>
</row>
<row>
- <entry><option>-fno-cse</option></entry>
- <entry>Turn off common sub-expression</entry>
+ <entry><option>-fcse</option></entry>
+ <entry>Turn on common sub-expression elimination. Implied by <option>-O</option>.</entry>
<entry>dynamic</entry>
- <entry>-</entry>
+ <entry>-fno-cse</entry>
</row>
<row>
- <entry><option>-fno-full-laziness</option></entry>
- <entry>Turn off full laziness (floating bindings outwards).</entry>
+ <entry><option>-ffull-laziness</option></entry>
+ <entry>Turn on full laziness (floating bindings outwards). Implied by <option>-O</option>.</entry>
<entry>dynamic</entry>
- <entry>-ffull-laziness</entry>
+ <entry>-fno-full-laziness</entry>
</row>
<row>
- <entry><option>-fno-pre-inlining</option></entry>
- <entry>Turn off pre-inlining</entry>
- <entry>static</entry>
- <entry>-</entry>
+ <entry><option>-frewrite-rules</option></entry>
+ <entry>Switch on all rewrite rules (including rules
+ generated by automatic specialisation of overloaded functions).
+ Implied by <option>-O</option>. </entry>
+ <entry>dynamic</entry>
+ <entry><option>-fno-rewrite-rules</option></entry>
</row>
<row>
- <entry><option>-fno-strictness</option></entry>
- <entry>Turn off strictness analysis</entry>
+ <entry><option>-fstrictness</option></entry>
+ <entry>Turn on strictness analysis. Implied by <option>-O</option>.</entry>
<entry>dynamic</entry>
- <entry>-</entry>
+ <entry>-fno-strictness</entry>
+ </row>
+
+ <row>
+ <entry><option>-fspec-constr</option></entry>
+ <entry>Turn on the SpecConstr transformation. Implied by <option>-O2</option>.</entry>
+ <entry>dynamic</entry>
+ <entry>-fno-spec-constr</entry>
+ </row>
+
+ <row>
+ <entry><option>-fliberate-case</option></entry>
+ <entry>Turn on the liberate-case transformation. Implied by <option>-O2</option>.</entry>
+ <entry>dynamic</entry>
+ <entry>-fno-liberate-case</entry>
+ </row>
+
+ <row>
+ <entry><option>-fspec-threshold</option>=<replaceable>n</replaceable></entry>
+ <entry>Set the size threshold for function specialisation to <replaceable>n</replaceable>, for both
+ the liberate-case and SpecConstr transformations (default: 200)</entry>
+ <entry>static</entry>
+ <entry><option>-</option></entry>
</row>
<row>
<entry>static</entry>
<entry><option>-fno-unfolding-use-threshold</option></entry>
</row>
+
+ <row>
+ <entry><option>-fno-pre-inlining</option></entry>
+ <entry>Turn off pre-inlining</entry>
+ <entry>static</entry>
+ <entry>-</entry>
+ </row>
</tbody>
</tgroup>
</informaltable>
<row>
<entry><option>-fno-code</option></entry>
<entry>Omit code generation</entry>
- <entry>mode</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
+ <entry><option>-fbyte-code</option></entry>
+ <entry>Generate byte-code</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
+ <entry><option>-fobject-code</option></entry>
+ <entry>Generate object code</entry>
+ <entry>dynamic</entry>
<entry>-</entry>
</row>
</tbody>
</thead>
<tbody>
<row>
+ <entry><option>-fPIC</option></entry>
+ <entry>Generate position-independent code (where available)</entry>
+ <entry>static</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-dynamic</option></entry>
<entry>Use dynamic Haskell libraries (if available)</entry>
<entry>static</entry>
</row>
<row>
<entry><option>-main-is</option></entry>
- <entry>Set main function</entry>
+ <entry>Set main module and function</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<entry>-</entry>
</row>
<row>
+ <entry><option>-pgmm</option> <replaceable>cmd</replaceable></entry>
+ <entry>Use <replaceable>cmd</replaceable> as the mangler</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
+ <entry><option>-pgms</option> <replaceable>cmd</replaceable></entry>
+ <entry>Use <replaceable>cmd</replaceable> as the splitter</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-pgma</option> <replaceable>cmd</replaceable></entry>
<entry>Use <replaceable>cmd</replaceable> as the assembler</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
- <entry><option>-pgmdep</option> <replaceable>cmd</replaceable></entry>
- <entry>Use <replaceable>cmd</replaceable> as the dependency generator</entry>
- <entry>dyanmic</entry>
- <entry>-</entry>
- </row>
- <row>
<entry><option>-pgmF</option> <replaceable>cmd</replaceable></entry>
<entry>Use <replaceable>cmd</replaceable> as the pre-processor
(with <option>-F</option> only)</entry>
<indexterm><primary><option>-pgma</option></primary></indexterm>
<indexterm><primary><option>-pgml</option></primary></indexterm>
<indexterm><primary><option>-pgmdll</option></primary></indexterm>
- <indexterm><primary><option>-pgmdep</option></primary></indexterm>
<indexterm><primary><option>-pgmF</option></primary></indexterm>
</sect2>
<entry>-</entry>
</row>
<row>
+ <entry><option>-optm</option> <replaceable>option</replaceable></entry>
+ <entry>pass <replaceable>option</replaceable> to the mangler</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-opta</option> <replaceable>option</replaceable></entry>
<entry>pass <replaceable>option</replaceable> to the assembler</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
+ <entry><option>-ddump-cmm</option></entry>
+ <entry>Dump C-- output</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-ddump-cpranal</option></entry>
<entry>Dump output from CPR analysis</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
+ <entry><option>-ddump-opt-cmm</option></entry>
+ <entry>Dump the results of C-- to C-- optimising passes</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-ddump-parsed</option></entry>
<entry>Dump parse tree</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
+ <entry><option>-ddump-prep</option></entry>
+ <entry>Dump prepared core</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-ddump-rn</option></entry>
<entry>Dump renamer output</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
+ <entry><option>-ddump-splices</option></entry>
+ <entry>Dump TH splided expressions, and what they evaluate to</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-ddump-stg</option></entry>
<entry>Dump final STG</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
+ <entry><option>-ddump-if-trace</option></entry>
+ <entry>Trace interface files</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
+ <entry><option>-ddump-tc-trace</option></entry>
+ <entry>Trace typechecker</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-ddump-rn-trace</option></entry>
<entry>Trace renamer</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
+ <entry><option>-dcmm-lint</option></entry>
+ <entry>C-- pass sanity checking</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-dstg-lint</option></entry>
<entry>STG pass sanity checking</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
+ <entry><option>-dshow-passes</option></entry>
+ <entry>Print out each pass name as it happens</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
+ <entry><option>-dfaststring-stats</option></entry>
+ <entry>Show statistics for fast string usage when finished</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-unreg</option></entry>
<entry>Enable unregisterised compilation</entry>
<entry>static</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
- <row>
- <entry><option>-fno-print-bind-result</option></entry>
- <entry><link id="ghci-stmts">Turn off printing of binding results in GHCi</link></entry>
- <entry>dynamic</entry>
- <entry>-</entry>
- </row>
</tbody>
</tgroup>
</informaltable>