[project @ 2004-08-15 20:28:02 by panne]
[ghc-hetmet.git] / ghc / docs / users_guide / flags.sgml
index 40e46a2..0974350 100644 (file)
@@ -3,14 +3,14 @@
 
     <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>&ndash;&ndash;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 &amp; 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>