Rationalise GhcMode, HscTarget and GhcLink
[ghc-hetmet.git] / docs / users_guide / flags.xml
index e6e22fe..1de581d 100644 (file)
              <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>
          </thead>
          <tbody>
            <row>
-             <entry><option>-no-recomp</option></entry>
+             <entry><option>-fforce-recomp</option></entry>
              <entry>Turn off recompilation checking; implied by any
              <option>-ddump-X</option> option</entry>
              <entry>dynamic</entry>
-             <entry><option>-recomp</option></entry>
+             <entry><option>-fno-force-recomp</option></entry>
            </row>
          </tbody>
        </tgroup>
              <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>
          </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>
          <tbody>
            <row>
              <entry><option>-fallow-overlapping-instances</option></entry>
-             <entry>Enable overlapping instances</entry>
+             <entry>Enable <link linkend="instance-overlap">overlapping instances</link></entry>
              <entry>dynamic</entry>
              <entry><option>-fno-allow-overlapping-instances</option></entry>
            </row>
            <row>
+             <entry><option>-fallow-incoherent-instances</option></entry>
+             <entry>Enable <link linkend="instance-overlap">incoherent instances</link>.  
+             Implies <option>-fallow-overlapping-instances</option> </entry>
+             <entry>dynamic</entry>
+             <entry><option>-fno-allow-incoherent-instances</option></entry>
+           </row>
+           <row>
              <entry><option>-fallow-undecidable-instances</option></entry>
-             <entry>Enable undecidable instances</entry>
+             <entry>Enable <link linkend="undecidable-instances">undecidable instances</link></entry>
              <entry>dynamic</entry>
              <entry><option>-fno-allow-undecidable-instances</option></entry>
            </row>
            <row>
-             <entry><option>-fallow-incoherent-instances</option></entry>
-             <entry>Enable incoherent instances.  
-             Implies <option>-fallow-overlapping-instances</option> </entry>
+             <entry><option>-fcontext-stack=N</option><replaceable>n</replaceable></entry>
+             <entry>set the <link linkend="undecidable-instances">limit for context reduction</link></entry>
              <entry>dynamic</entry>
-             <entry><option>-fno-allow-incoherent-instances</option></entry>
+             <entry><option>20</option></entry>
            </row>
            <row>
              <entry><option>-farrows</option></entry>
-             <entry>Enable arrow notation extension</entry>
+             <entry>Enable <link linkend="arrow-notation">arrow
+             notation</link> extension</entry>
              <entry>dynamic</entry>
              <entry><option>-fno-arrows</option></entry>
            </row>
            <row>
-             <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>Enable foreign function interface (implied by
+             <entry>Enable <link linkend="ffi">foreign function interface</link> (implied by
              <option>-fglasgow-exts</option>)</entry>
              <entry>dynamic</entry>
              <entry><option>-fno-ffi</option></entry>
            </row>
            <row>
              <entry><option>-fgenerics</option></entry>
-             <entry>Enable generics</entry>
+             <entry>Enable <link linkend="generic-classes">generic classes</link></entry>
              <entry>dynamic</entry>
              <entry><option>-fno-fgenerics</option></entry>
            </row>
            </row>
            <row>
              <entry><option>-fimplicit-params</option></entry>
-             <entry>Enable Implicit Parameters.
+             <entry>Enable <link linkend="implicit-parameters">Implicit Parameters</link>.
              Implied by <option>-fglasgow-exts</option>.</entry>
              <entry>dynamic</entry>
              <entry><option>-fno-implicit-params</option></entry>
            </row>
            <row>
              <entry><option>-fno-monomorphism-restriction</option></entry>
-             <entry>Disable the monomorphism restriction</entry>
+             <entry>Disable the <link linkend="monomorphism">monomorphism restriction</link></entry>
              <entry>dynamic</entry>
              <entry><option>-fmonomorphism-restriction</option></entry>
            </row>
            <row>
+             <entry><option>-fno-mono-pat-binds</option></entry>
+             <entry>Make <link linkend="monomorphism">pattern bindings polymorphic</link></entry>
+             <entry>dynamic</entry>
+             <entry><option>-fmono-pat-binds</option></entry>
+           </row>
+           <row>
+             <entry><option>-fextended-default-rules</option></entry>
+             <entry>Use GHCi's <link linkend="extended-default-rules">extended default rules</link> in a normal module</entry>
+             <entry>dynamic</entry>
+             <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 lexically-scoped type variables.
+             <entry>Enable <link linkend="scoped-type-variables">lexically-scoped type variables</link>.
              Implied by <option>-fglasgow-exts</option>.</entry>
              <entry>dynamic</entry>
              <entry><option>-fno-scoped-type-variables</option></entry>
            </row>
            <row>
              <entry><option>-fth</option></entry>
-             <entry>Enable Template Haskell. 
+             <entry>Enable <link linkend="template-haskell">Template Haskell</link>. 
                No longer implied by <option>-fglasgow-exts</option>.</entry>
              <entry>dynamic</entry>
              <entry><option>-fno-th</option></entry>
            </row>
+           <row>
+             <entry><option>-fbang-patterns</option></entry>
+             <entry>Enable <link linkend="bang-patterns">bang patterns</link>.</entry>
+             <entry>dynamic</entry>
+             <entry><option>-fno-bang-patterns</option></entry>
+           </row>
          </tbody>
        </tgroup>
       </informaltable>
     <sect2>
       <title>Warnings</title>
       
-      <para>(<xref linkend="options-sanity"/></para>
+      <para><xref linkend="options-sanity"/></para>
 
     <informaltable>
       <tgroup cols="4" align="left" colsep="1" rowsep="1">
          </row>
 
          <row>
-           <entry><option>-fwarn-misc</option></entry>
-           <entry>enable miscellaneous warnings</entry>
-           <entry>dynamic</entry>
-           <entry><option>-fno-warn-misc</option></entry>
-         </row>
-
-         <row>
            <entry><option>-fwarn-missing-fields</option></entry>
            <entry>warn when fields of a record are uninitialised</entry>
            <entry>dynamic</entry>
          </row>
 
          <row>
-           <entry><option>-fwarn-oprhans</option></entry>
+           <entry><option>-fwarn-orphans</option></entry>
            <entry>warn when the module contains "orphan" instance declarations
            or rewrite rules</entry>
            <entry>dynamic</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>
              <entry><option>-no-auto-all</option></entry>
            </row>
            <row>
-             <entry><option>-auto-dicts</option></entry>
-             <entry>Auto-add <literal>_scc_</literal>s to all dictionaries</entry>
-             <entry>static</entry>
-             <entry><option>-no-auto-dicts</option></entry>
-           </row>
-           <row>
              <entry><option>-caf-all</option></entry>
              <entry>Auto-add <literal>_scc_</literal>s to all CAFs</entry>
              <entry>static</entry>
     </sect2>
 
     <sect2>
-      <title>Parallelism options</title>
+      <title>Haskell pre-processor options</title>
 
-      <para><xref linkend="sec-using-parallel"/></para>
+      <para><xref linkend="pre-processor"/></para>
 
       <informaltable>
        <tgroup cols="4" align="left" colsep="1" rowsep="1">
          </thead>
          <tbody>
            <row>
-             <entry><option>-gransim</option></entry>
-             <entry>Enable GRANSIM</entry>
-             <entry>static</entry>
-             <entry>-</entry>
-           </row>
-           <row>
-             <entry><option>-parallel</option></entry>
-             <entry>Enable Parallel Haskell</entry>
-             <entry>static</entry>
-             <entry>-</entry>
-           </row>
-           <row>
-             <entry><option>-smp</option></entry>
-             <entry>Enable SMP support</entry>
-             <entry>static</entry>
+             <entry><option>-F</option></entry>
+             <entry>
+                  Enable the use of a pre-processor
+                  (set with <option>-pgmF</option>)
+              </entry>
+             <entry>dynamic</entry>
              <entry>-</entry>
            </row>
          </tbody>
            <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>-package</option> <replaceable>name</replaceable></entry>
-             <entry>Link in package <replaceable>name</replaceable></entry>
-             <entry>dynamic</entry>
-             <entry>-</entry>
-           </row>
-           <row>
              <entry><option>-split-objs</option></entry>
              <entry>Split objects (for libraries)</entry>
              <entry>dynamic</entry>
              <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>
          </thead>
          <tbody>
            <row>
-             <entry><option>-mv8</option></entry>
-             <entry>(SPARC only) enable version 8 support</entry>
-             <entry>static</entry>
-             <entry>-</entry>
-           </row>
-           <row>
-             <entry><option>-monly-[32]-regs</option></entry>
+             <entry><option>-monly-[432]-regs</option></entry>
              <entry>(x86 only) give some registers back to the C compiler</entry>
              <entry>dynamic</entry>
              <entry>-</entry>
              <entry>-</entry>
            </row>
            <row>
-             <entry><option>-ddump-absC</option></entry>
-             <entry>Dump abstract C</entry>
-             <entry>dynamic</entry>
-             <entry>-</entry>
-           </row>
-           <row>
              <entry><option>-ddump-asm</option></entry>
              <entry>Dump assembly</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-realC</option></entry>
-             <entry>Dump &ldquo;real&rdquo; C</entry>
+             <entry><option>-ddump-prep</option></entry>
+             <entry>Dump prepared core</entry>
              <entry>dynamic</entry>
              <entry>-</entry>
            </row>
              <entry>-</entry>
            </row>
            <row>
-             <entry><option>-ddump-sat</option></entry>
-             <entry>Dump saturated output</entry>
-             <entry>dynamic</entry>
-             <entry>-</entry>
-           </row>
-           <row>
              <entry><option>-ddump-simpl</option></entry>
              <entry>Dump final simplifier 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-usagesp</option></entry>
-             <entry>Dump UsageSP analysis output</entry>
+             <entry><option>-ddump-worker-wrapper</option></entry>
+             <entry>Dump worker-wrapper output</entry>
              <entry>dynamic</entry>
              <entry>-</entry>
            </row>
            <row>
-             <entry><option>-ddump-worker-wrapper</option></entry>
-             <entry>Dump worker-wrapper output</entry>
+             <entry><option>-ddump-if-trace</option></entry>
+             <entry>Trace interface files</entry>
              <entry>dynamic</entry>
              <entry>-</entry>
            </row>
            <row>
-             <entry><option>-ddump-rn-trace</option></entry>
-             <entry>Trace renamer</entry>
+             <entry><option>-ddump-tc-trace</option></entry>
+             <entry>Trace typechecker</entry>
              <entry>dynamic</entry>
              <entry>-</entry>
            </row>
            <row>
-             <entry><option>-ddump-rn-stats</option></entry>
-             <entry>Renamer stats</entry>
+             <entry><option>-ddump-rn-trace</option></entry>
+             <entry>Trace renamer</entry>
              <entry>dynamic</entry>
              <entry>-</entry>
            </row>
            <row>
-             <entry><option>-ddump-stix</option></entry>
-             <entry>Native code generator intermediate form</entry>
+             <entry><option>-ddump-rn-stats</option></entry>
+             <entry>Renamer stats</entry>
              <entry>dynamic</entry>
              <entry>-</entry>
            </row>
              <entry>-</entry>
            </row>
            <row>
-             <entry><option>-dstg-lint</option></entry>
-             <entry>STG pass sanity checking</entry>
+             <entry><option>-dcmm-lint</option></entry>
+             <entry>C-- pass sanity checking</entry>
              <entry>dynamic</entry>
              <entry>-</entry>
            </row>
            <row>
-             <entry><option>-dstg-stats</option></entry>
-             <entry>Dump STG stats</entry>
+             <entry><option>-dstg-lint</option></entry>
+             <entry>STG pass sanity checking</entry>
              <entry>dynamic</entry>
              <entry>-</entry>
            </row>
            <row>
-             <entry><option>-dusagesp-lint</option></entry>
-             <entry>UsageSP sanity checker</entry>
+             <entry><option>-dstg-stats</option></entry>
+             <entry>Dump STG stats</entry>
              <entry>dynamic</entry>
              <entry>-</entry>
            </row>
              <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>
          </thead>
          <tbody>
            <row>
-             <entry><option>-femit-extern-decls</option></entry>
-             <entry>???</entry>
-             <entry>static</entry>
-             <entry>-</entry>
-           </row>
-           <row>
              <entry><option>-fno-hi-version-check</option></entry>
              <entry>Don't complain about <literal>.hi</literal> file mismatches</entry>
              <entry>static</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>