<para>This section is a quick-reference for GHC's command-line
flags. For each flag, we also list its static/dynamic status (see
- <xref linkend="static-dynamic-flags">), and the flag's opposite
+ <xref linkend="static-dynamic-flags"/>), and the flag's opposite
(if available).</para>
<sect2>
- <title>Help and verbosity options (<xref linkend="options-help">)</title>
+ <title>Help and verbosity options (<xref linkend="options-help"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
<entry>-</entry>
</row>
<row>
+ <entry><option>-V</option></entry>
+ <entry>display GHC version</entry>
+ <entry>static</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>––version</option></entry>
<entry>display GHC version</entry>
<entry>static</entry>
</sect2>
<sect2>
- <title>Which phases to run (<xref linkend="options-order">)</title>
+ <title>Which phases to run (<xref linkend="options-order"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
</sect2>
<sect2>
- <title>Redirecting output (<xref linkend="options-output">)</title>
+ <title>Redirecting output (<xref linkend="options-output"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
</sect2>
<sect2>
- <title>Keeping intermediate files (<xref linkend="keeping-intermediates">)</title>
+ <title>Keeping intermediate files (<xref linkend="keeping-intermediates"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
</sect2>
<sect2>
- <title>Temporary files (<xref linkend="temp-files">)</title>
+ <title>Temporary files (<xref linkend="temp-files"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
</sect2>
<sect2>
- <title>Finding imports (<xref linkend="search-path">)</title>
+ <title>Finding imports (<xref linkend="search-path"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
</sect2>
<sect2>
- <title>Interface file options (<xref linkend="hi-options">)</title>
+ <title>Interface file options (<xref linkend="hi-options"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
</sect2>
<sect2>
- <title>Recompilation checking (<xref linkend="recomp">)</title>
+ <title>Recompilation checking (<xref linkend="recomp"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
</sect2>
<sect2>
- <title>Interactive-mode options (<xref linkend="ghci-dot-files">)</title>
+ <title>Interactive-mode options (<xref linkend="ghci-dot-files"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
</sect2>
<sect2>
- <title>Packages (<xref linkend="packages">)</title>
+ <title>Packages (<xref linkend="packages"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
</sect2>
<sect2>
- <title>Language options (<xref linkend="options-language">)</title>
+ <title>Language options (<xref linkend="options-language"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
<tbody>
<row>
<entry><option>-fallow-overlapping-instances</option></entry>
- <entry></entry>
+ <entry>Enable overlapping instances</entry>
<entry>dynamic</entry>
<entry><option>-fno-allow-overlapping-instances</option></entry>
</row>
<row>
- <entry><option>-fallow-undecidable-instances</option></entry>
- <entry>Enable undecidable instances</entry>
+ <entry><option>-farrows</option></entry>
+ <entry>Enable arrow notation extension</entry>
<entry>dynamic</entry>
- <entry><option>-fno-allow-undecidable-instances</option></entry>
+ <entry><option>-fno-arrows</option></entry>
</row>
<row>
- <entry><option>-fgenerics</option></entry>
- <entry>Enable generics</entry>
+ <entry><option>-fallow-undecidable-instances</option></entry>
+ <entry>Enable undecidable instances</entry>
<entry>dynamic</entry>
- <entry><option>-fno-fgenerics</option></entry>
+ <entry><option>-fno-allow-undecidable-instances</option></entry>
</row>
<row>
- <entry><option>-fglasgow-exts</option></entry>
- <entry>Enable most language extensions</entry>
- <entry>dynamic</entry>
- <entry><option>-fno-glasgow-exts</option></entry>
+ <entry><option>-fcontext-stack</option><replaceable>n</replaceable></entry>
+ <entry>set the limit for context reduction</entry>
+ <entry>static</entry>
+ <entry><option>-</option></entry>
</row>
<row>
<entry><option>-ffi</option> or <option>-fffi</option></entry>
<entry><option>-fno-ffi</option></entry>
</row>
<row>
- <entry><option>-farrows</option></entry>
- <entry>Enable arrow notation extension</entry>
+ <entry><option>-fgenerics</option></entry>
+ <entry>Enable generics</entry>
<entry>dynamic</entry>
- <entry><option>-fno-arrows</option></entry>
+ <entry><option>-fno-fgenerics</option></entry>
</row>
<row>
- <entry><option>-fwith</option></entry>
- <entry>Enable deprecated <literal>with</literal> keyword</entry>
+ <entry><option>-fglasgow-exts</option></entry>
+ <entry>Enable most language extensions</entry>
<entry>dynamic</entry>
- <entry><option>-fno-with</option></entry>
+ <entry><option>-fno-glasgow-exts</option></entry>
</row>
<row>
<entry><option>-fignore-asserts</option></entry>
<entry><option>-fno-ignore-asserts</option></entry>
</row>
<row>
+ <entry><option>-fimplicit-params</option></entry>
+ <entry>Enable Implicit Parameters</entry>
+ <entry>dynamic</entry>
+ <entry><option>-fno-implicit-params</option></entry>
+ </row>
+ <row>
+ <entry><option>-firrefutable-tuples</option></entry>
+ <entry>Make tuple pattern matching irrefutable</entry>
+ <entry>dynamic</entry>
+ <entry><option>-fno-irrefutable-tuples</option></entry>
+ </row>
+ <row>
<entry><option>-fno-implicit-prelude</option></entry>
<entry>Don't implicitly <literal>import Prelude</literal></entry>
<entry>dynamic</entry>
<entry><option>-</option></entry>
</row>
<row>
- <entry><option>-firrefutable-tuples</option></entry>
- <entry>Make tuple pattern matching irrefutable</entry>
- <entry>dynamic</entry>
- <entry><option>-fno-irrefutable-tuples</option></entry>
- </row>
- <row>
- <entry><option>-fcontext-stack</option><replaceable>n</replaceable></entry>
- <entry>set the limit for context reduction</entry>
+ <entry><option>-fth</option></entry>
+ <entry>Enable Template Haskell</entry>
<entry>dynamic</entry>
- <entry><option>-</option></entry>
+ <entry><option>-fno-th</option></entry>
</row>
</tbody>
</tgroup>
</sect2>
<sect2>
- <title>Warnings (<xref linkend="options-sanity">)</title>
+ <title>Warnings (<xref linkend="options-sanity"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
<row>
<entry><option>-fwarn-deprecations</option></entry>
- <entry>warn about uses of functions & types that are deprecated</entry>
+ <entry>warn about uses of functions & types that are deprecated</entry>
<entry>dynamic</entry>
<entry><option>-fno-warn-deprecations</option></entry>
</row>
</sect2>
<sect2>
- <title>Optimisation levels (<xref linkend="options-optimise">)</title>
+ <title>Optimisation levels (<xref linkend="options-optimise"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
<row>
<entry><option>-O</option></entry>
<entry>Enable default optimisation (level 1)</entry>
- <entry>static</entry>
+ <entry>dynamic</entry>
<entry><option>-O0</option></entry>
</row>
<row>
<entry><option>-O</option><replaceable>n</replaceable></entry>
<entry>Set optimisation level <replaceable>n</replaceable></entry>
- <entry>static</entry>
+ <entry>dynamic</entry>
<entry><option>-O0</option></entry>
</row>
</tbody>
</sect2>
<sect2>
- <title>Individual optimisations (<xref linkend="options-f">)</title>
+ <title>Individual optimisations (<xref linkend="options-f"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
<row>
<entry><option>-fcase-merge</option></entry>
<entry>Enable case-merging</entry>
- <entry>static</entry>
+ <entry>dynamic</entry>
<entry><option>-fno-case-merge</option></entry>
</row>
<row>
<entry><option>-fdicts-strict</option></entry>
<entry>Make dictionaries strict</entry>
- <entry>dynamic</entry>
+ <entry>static</entry>
<entry><option>-fno-dicts-strict</option></entry>
</row>
<row>
<entry><option>-fdo-eta-reduction</option></entry>
<entry>Enable eta-reduction</entry>
- <entry>static</entry>
+ <entry>dynamic</entry>
<entry><option>-fno-do-eta-reduction</option></entry>
</row>
<row>
<entry><option>-fdo-lambda-eta-expansion</option></entry>
<entry>Enable lambda eta-reduction</entry>
- <entry>static</entry>
+ <entry>dynamic</entry>
<entry><option>-fno-do-lambda-eta-expansion</option></entry>
</row>
</row>
<row>
- <entry><option>-flet-no-escape</option></entry>
- <entry>Enable let-no-escape optimisation</entry>
- <entry>static</entry>
- <entry><option>-fno-let-no-escape</option></entry>
- </row>
-
- <row>
<entry><option>-fliberate-case-threshold</option></entry>
<entry>Tweak the liberate-case optimisation (default: 10)</entry>
<entry>static</entry>
<row>
<entry><option>-fomit-interface-pragmas</option></entry>
<entry>Don't generate interface pragmas</entry>
- <entry>static</entry>
+ <entry>dynamic</entry>
<entry><option>-fno-omit-interface-pragmas</option></entry>
</row>
<row>
<entry><option>-fmax-simplifier-iterations</option></entry>
<entry>Set the max iterations for the simplifier</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+
+ <row>
+ <entry><option>-fno-state-hack</option></entry>
+ <entry>Turn off the "state hack" whereby any lambda with a real-world state token
+ as argument is considered to be single-entry. Hence OK to inline things inside it.</entry>
<entry>static</entry>
<entry>-</entry>
</row>
<entry><option>-fno-cpr</option></entry>
<entry>Turn off CPR analysis</entry>
<entry>static</entry>
- <entry>-</entry>
+ <entry>-fcpr</entry>
</row>
<row>
<entry><option>-fno-cse</option></entry>
<entry>Turn off common sub-expression</entry>
- <entry>static</entry>
+ <entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
+ <entry><option>-fno-full-laziness</option></entry>
+ <entry>Turn off full laziness (floating bindings outwards). It is on by default.</entry>
+ <entry>dynamic</entry>
+ <entry>-ffull-laziness</entry>
+ </row>
+
+ <row>
<entry><option>-fno-pre-inlining</option></entry>
<entry>Turn off pre-inlining</entry>
<entry>static</entry>
<row>
<entry><option>-fno-strictness</option></entry>
<entry>Turn off strictness analysis</entry>
- <entry>static</entry>
+ <entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
<entry><option>-funbox-strict-fields</option></entry>
<entry>Flatten strict constructor fields</entry>
- <entry>static</entry>
+ <entry>dynamic</entry>
<entry><option>-fno-unbox-strict-fields</option></entry>
</row>
<entry>static</entry>
<entry><option>-fno-unfolding-use-threshold</option></entry>
</row>
-
- <row>
- <entry><option>-fusagesp</option></entry>
- <entry>Turn on UsageSP analysis</entry>
- <entry>static</entry>
- <entry><option>-fno-usagesp</option></entry>
- </row>
</tbody>
</tgroup>
</informaltable>
</sect2>
<sect2>
- <title>Profiling options (<xref linkend="profiling">)</title>
+ <title>Profiling options (<xref linkend="profiling"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
</sect2>
<sect2>
- <title>Parallelism options (<xref linkend="sec-using-parallel">)</title>
+ <title>Parallelism options (<xref linkend="sec-using-parallel"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
</sect2>
<sect2>
- <title>C pre-processor options (<xref linkend="c-pre-processor">)</title>
+ <title>C pre-processor options (<xref linkend="c-pre-processor"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
</sect2>
<sect2>
- <title>C compiler options (<xref linkend="options-C-compiler">)</title>
+ <title>C compiler options (<xref linkend="options-C-compiler"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
</sect2>
<sect2>
- <title>Code generation options (<xref linkend="options-codegen">)</title>
+ <title>Code generation options (<xref linkend="options-codegen"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
</sect2>
<sect2>
- <title>Linking options (<xref linkend="options-linker">)</title>
+ <title>Linking options (<xref linkend="options-linker"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
<entry>static</entry>
<entry>-</entry>
</row>
+ <row>
+ <entry><option>-threaded</option></entry>
+ <entry>Use the threaded runtime</entry>
+ <entry>static</entry>
+ <entry>-</entry>
+ </row>
+ <row>
+ <entry><option>-debug</option></entry>
+ <entry>Use the debugging runtime</entry>
+ <entry>static</entry>
+ <entry>-</entry>
+ </row>
</tbody>
</tgroup>
</informaltable>
</sect2>
<sect2>
- <title>Replacing phases (<xref linkend="replacing-phases">)</title>
+ <title>Replacing phases (<xref linkend="replacing-phases"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
</sect2>
<sect2>
- <title>Forcing options to particular phases (<xref linkend="forcing-options-through">)</title>
+ <title>Forcing options to particular phases (<xref linkend="forcing-options-through"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
<entry>-</entry>
</row>
<row>
+ <entry><option>-optF</option> <replaceable>option</replaceable></entry>
+ <entry>pass <replaceable>option</replaceable> to the
+ custom pre-processor</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-optc</option> <replaceable>option</replaceable></entry>
<entry>pass <replaceable>option</replaceable> to the C compiler</entry>
<entry>dynamic</entry>
</sect2>
<sect2>
- <title>Platform-specific options (<xref linkend="options-platform">)</title>
+ <title>Platform-specific options (<xref linkend="options-platform"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
<sect2>
- <title>External core file options (<xref linkend="ext-core">)</title>
+ <title>External core file options (<xref linkend="ext-core"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
<sect2>
- <title>Compiler debugging options (<xref linkend="options-debugging">)</title>
+ <title>Compiler debugging options (<xref linkend="options-debugging"/>)</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
<title>Misc compiler options</title>
<informaltable>
- <tgroup cols=3 align=left colsep=1 rowsep=1>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
<thead>
<row>
<entry>Flag</entry>
</thead>
<tbody>
<row>
- <entry><option>-funfold-casms-in-hi-file</option></entry>
- <entry>Allow casms in unfoldings</entry>
- <entry>static</entry>
- <entry>-</entry>
- </row>
- <row>
<entry><option>-femit-extern-decls</option></entry>
<entry>???</entry>
<entry>static</entry>
<entry>-</entry>
</row>
<row>
- <entry><option>-fno-prune-tydecls</option></entry>
- <entry>Renamer: don't prune type declarations</entry>
- <entry>static</entry>
- <entry>-</entry>
- </row>
- <row>
<entry><option>-fhistory-size</option></entry>
<entry>Set simplification history size</entry>
<entry>static</entry>