<entry>-</entry>
</row>
<row>
- <entry><option>––supported-languages</option></entry>
- <entry>display the supported language extensions</entry>
+ <entry><option>––supported-extensions</option> or <option>––supported-languages</option></entry>
+ <entry>display the supported languages and language extensions</entry>
<entry>mode</entry>
<entry>-</entry>
</row>
</row>
<row>
<entry><option>-odir</option> <replaceable>dir</replaceable></entry>
- <entry>set output directory</entry>
+ <entry>set directory for object files</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<entry>dynamic</entry>
<entry>-</entry>
</row>
+ <row>
+ <entry><option>-outputdir</option> <replaceable>dir</replaceable></entry>
+ <entry>set output directory</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
</tbody>
</tgroup>
</informaltable>
<entry>-</entry>
</row>
<row>
+ <entry><option>-keep-llvm-file</option> or
+ <option>-keep-llvm-files</option></entry>
+ <entry>retain intermediate LLVM <literal>.ll</literal> files</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-keep-s-file</option> or
<option>-keep-s-files</option></entry>
<entry>retain intermediate <literal>.s</literal> files</entry>
<entry>static</entry>
<entry>-</entry>
</row>
+ <row>
+ <entry><option>-no-auto-link-packages</option></entry>
+ <entry>Don't automatically link in the haskell98 package.</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
</tbody>
</tgroup>
</informaltable>
<sect2>
<title>Language options</title>
- <para><xref linkend="options-language"/></para>
+ <para>Language options can be enabled either by a command-line option
+ <option>-Xblah</option>, or by a <literal>{-# LANGUAGE blah #-}</literal>
+ pragma in the file itself. See <xref linkend="options-language"/></para>
<informaltable>
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<entry><option>-XNoArrows</option></entry>
</row>
<row>
- <entry><option>-fdisambiguate-record-fields</option></entry>
+ <entry><option>-XDisambiguateRecordFields</option></entry>
<entry>Enable <link linkend="disambiguate-fields">record
field disambiguation</link></entry>
<entry>dynamic</entry>
- <entry><option>-fno-disambiguate-record-fields</option></entry>
+ <entry><option>-XNoDisambiguateRecordFields</option></entry>
</row>
<row>
<entry><option>-XForeignFunctionInterface</option></entry>
<entry><option>-XMonomorphismRrestriction</option></entry>
</row>
<row>
+ <entry><option>-XNoNPlusKPatterns</option></entry>
+ <entry>Disable support for <literal>n+k</literal> patterns</entry>
+ <entry>dynamic</entry>
+ <entry><option>-XNPlusKPatterns</option></entry>
+ </row>
+ <row>
<entry><option>-XNoMonoPatBinds</option></entry>
<entry>Make <link linkend="monomorphism">pattern bindings polymorphic</link></entry>
<entry>dynamic</entry>
<entry><option>-XNoScopedTypeVariables</option></entry>
</row>
<row>
+ <entry><option>-XMonoLocalBinds</option></entry>
+ <entry>Enable <link linkend="mono-local-binds">do not generalise local bindings</link>.
+ </entry>
+ <entry>dynamic</entry>
+ <entry><option>-XNoMonoLocalBinds</option></entry>
+ </row>
+ <row>
<entry><option>-XTemplateHaskell</option></entry>
<entry>Enable <link linkend="template-haskell">Template Haskell</link>.
No longer implied by <option>-fglasgow-exts</option>.</entry>
</row>
<row>
<entry><option>-XUnicodeSyntax</option></entry>
- <entry>Enable unicode syntax.</entry>
+ <entry>Enable <link linkend="unicode-syntax">unicode syntax</link>.</entry>
<entry>dynamic</entry>
<entry><option>-XNoUnicodeSyntax</option></entry>
</row>
<entry><option>-XNoMagicHash</option></entry>
</row>
<row>
+ <entry><option>-XNewQualifiedOperators</option></entry>
+ <entry>Enable <link linkend="new-qualified-operators">new
+ qualified operator syntax</link></entry>
+ <entry>dynamic</entry>
+ <entry><option>-XNoNewQualifiedOperators</option></entry>
+ </row>
+ <row>
+ <entry><option>-XExplicitForALl</option></entry>
+ <entry>Enable <link linkend="explicit-foralls">explicit universal quantification</link>.
+ Implied by <option>-XScopedTypeVariables</option>,
+ <option>-XLiberalTypeSynonyms</option>,
+ <option>-XRank2Types</option>,
+ <option>-XRankNTypes</option>,
+ <option>-XPolymorphicComponents</option>,
+ <option>-XExistentialQuantification</option>
+ </entry>
+ <entry>dynamic</entry>
+ <entry><option>-XNoExplicitForAll</option></entry>
+ </row>
+ <row>
<entry><option>-XPolymorphicComponents</option></entry>
<entry>Enable <link linkend="universal-quantification">polymorphic components for data constructors</link>.</entry>
<entry>dynamic</entry>
</row>
<row>
<entry><option>-XTransformListComp</option></entry>
- <entry>Enable <link linkend="generalised-list-comprehensions">transform list comprehensions</link>.</entry>
+ <entry>Enable <link linkend="generalised-list-comprehensions">generalised list comprehensions</link>.</entry>
<entry>dynamic</entry>
<entry><option>-XNoTransformListComp</option></entry>
</row>
<entry><option>-XNoTypeOperators</option></entry>
</row>
<row>
+ <entry><option>-XDoRec</option></entry>
+ <entry>Enable <link linkend="recursive-do-notation">recursive do notation</link>.</entry>
+ <entry>dynamic</entry>
+ <entry><option>-XNoDoRec</option></entry>
+ </row>
+ <row>
<entry><option>-XRecursiveDo</option></entry>
- <entry>Enable <link linkend="mdo-notation">recursive do (mdo) notation</link>.</entry>
+ <entry>Enable <link linkend="mdo-notation">recursive do (mdo) notation</link>. This is deprecated; please use <link linkend="recursive-do-notation">recursive do notation</link> instead.</entry>
<entry>dynamic</entry>
<entry><option>-XNoRecursiveDo</option></entry>
</row>
</row>
<row>
<entry><option>-XTypeSynonymInstances</option></entry>
- <entry>Enable <link linkend="type-synonyms">type synonyms</link>.</entry>
+ <entry>Enable <link linkend="flexible-instance-head">type synonyms in instance heads</link>.</entry>
<entry>dynamic</entry>
<entry><option>-XNoTypeSynonymInstances</option></entry>
</row>
</row>
<row>
+ <entry><option>-fwarn-unrecognised-pragmas</option></entry>
+ <entry>warn about uses of pragmas that GHC doesn't recognise</entry>
+ <entry>dynamic</entry>
+ <entry><option>-fno-warn-unrecognised-pragmas</option></entry>
+ </row>
+
+ <row>
<entry><option>-fwarn-warnings-deprecations</option></entry>
<entry>warn about uses of functions & types that have warnings or deprecated pragmas</entry>
<entry>dynamic</entry>
</row>
<row>
+ <entry><option>-fwarn-missing-import-lists</option></entry>
+ <entry>warn when explicit imports lack an import list</entry>
+ <entry>dynamic</entry>
+ <entry><option>-fnowarn-missing-import-lists</option></entry>
+ </row>
+
+ <row>
<entry><option>-fwarn-missing-methods</option></entry>
<entry>warn when class methods are undefined</entry>
<entry>dynamic</entry>
</row>
<row>
- <entry><option>-fwarn-simple-patterns</option></entry>
- <entry>warn about lambda-patterns that can fail</entry>
- <entry>dynamic</entry>
- <entry><option>-fno-warn-simple-patterns</option></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-unused-matches</option></entry>
</row>
+ <row>
+ <entry><option>-fwarn-unused-do-bind</option></entry>
+ <entry>warn about do bindings that appear to throw away values of types other than <literal>()</literal></entry>
+ <entry>dynamic</entry>
+ <entry><option>-fno-warn-unused-do-bind</option></entry>
+ </row>
+
+ <row>
+ <entry><option>-fwarn-wrong-do-bind</option></entry>
+ <entry>warn about do bindings that appear to throw away monadic values that you should have bound instead</entry>
+ <entry>dynamic</entry>
+ <entry><option>-fno-warn-wrong-do-bind</option></entry>
+ </row>
+
</tbody>
</tgroup>
</informaltable>
</row>
<row>
+ <entry><option>-fspecialise</option></entry>
+ <entry>Turn on specialisation of overloaded functions. Implied by <option>-O</option>.</entry>
+ <entry>dynamic</entry>
+ <entry>-fno-specialise</entry>
+ </row>
+
+ <row>
<entry><option>-ffull-laziness</option></entry>
<entry>Turn on full laziness (floating bindings outwards). Implied by <option>-O</option>.</entry>
<entry>dynamic</entry>
</row>
<row>
- <entry><option>-frewrite-rules</option></entry>
+ <entry><option>-ffloat-in</option></entry>
+ <entry>Turn on the float-in transformation. Implied by <option>-O</option>.</entry>
+ <entry>dynamic</entry>
+ <entry>-fno-float-in</entry>
+ </row>
+
+ <row>
+ <entry><option>-fenable-rewrite-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>
+ <entry><option>-fno-enable-rewrite-rules</option></entry>
</row>
<row>
<entry>-fno-strictness</entry>
</row>
+ <row>
+ <entry><option>-fstrictness=before</option>=<replaceable>n</replaceable></entry>
+ <entry>Run an additional strictness analysis before simplifier
+phase <replaceable>n</replaceable></entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+
<row>
<entry><option>-fspec-constr</option></entry>
<entry>Turn on the SpecConstr transformation. Implied by <option>-O2</option>.</entry>
<entry>static</entry>
<entry>-</entry>
</row>
+
+ <row>
+ <entry><option>-feager-blackholing</option></entry>
+ <entry>Turn on <link linkend="parallel-compile-options">eager blackholing</link></entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
</tbody>
</tgroup>
</informaltable>
<row>
<entry><option>-auto</option></entry>
<entry>Auto-add <literal>_scc_</literal>s to all
- exported functions</entry>
- <entry>static</entry>
+ exported functions not marked INLINE</entry>
+ <entry>dynamic</entry>
<entry><option>-no-auto</option></entry>
</row>
<row>
<entry><option>-auto-all</option></entry>
<entry>Auto-add <literal>_scc_</literal>s to all
- top-level functions</entry>
- <entry>static</entry>
+ top-level functions not marked INLINE</entry>
+ <entry>dynamic</entry>
<entry><option>-no-auto-all</option></entry>
</row>
<row>
<entry><option>-caf-all</option></entry>
<entry>Auto-add <literal>_scc_</literal>s to all CAFs</entry>
- <entry>static</entry>
+ <entry>dynamic</entry>
<entry><option>-no-caf-all</option></entry>
</row>
<row>
</row>
<row>
<entry><option>-ticky</option></entry>
- <entry>Turn on ticky-ticky profiling</entry>
+ <entry><link linkend="ticky-ticky">Turn on ticky-ticky profiling</link></entry>
<entry>static</entry>
<entry>-</entry>
</row>
</sect2>
<sect2>
- <title>C compiler options</title>
-
- <para><xref linkend="options-C-compiler"/></para>
- <informaltable>
- <tgroup cols="4" align="left" colsep="1" rowsep="1">
- <thead>
- <row>
- <entry>Flag</entry>
- <entry>Description</entry>
- <entry>Static/Dynamic</entry>
- <entry>Reverse</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry><option>-#include</option> <replaceable>file</replaceable></entry>
- <entry>Include <replaceable>file</replaceable> when
- compiling the <filename>.hc</filename> file</entry>
- <entry>dynamic</entry>
- <entry>-</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </sect2>
-
- <sect2>
<title>Code generation options</title>
<para><xref linkend="options-codegen"/></para>
<entry>-fasm</entry>
</row>
<row>
+ <entry><option>-fllvm</option></entry>
+ <entry>Compile via LLVM</entry>
+ <entry>dynamic</entry>
+ <entry>-fasm</entry>
+ </row>
+ <row>
<entry><option>-fno-code</option></entry>
<entry>Omit code generation</entry>
<entry>dynamic</entry>
</thead>
<tbody>
<row>
+ <entry><option>-shared</option></entry>
+ <entry>Generate a shared library (as opposed to an executable)</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-fPIC</option></entry>
<entry>Generate position-independent code (where available)</entry>
<entry>static</entry>
<entry>-</entry>
</row>
<row>
+ <entry><option>-dynload</option></entry>
+ <entry>Selects one of a number of modes for finding shared
+ libraries at runtime.</entry>
+ <entry>static</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-framework</option> <replaceable>name</replaceable></entry>
<entry>On Darwin/MacOS X only, link in the framework <replaceable>name</replaceable>.
This option corresponds to the <option>-framework</option> option for Apple's Linker.</entry>
<entry>-</entry>
</row>
<row>
+ <entry><option>-rtsopts</option>, <option>-rtsopts={none,some,all}</option></entry>
+ <entry>Control whether the RTS behaviour can be tweaked via command-line
+ flags and the <literal>GHCRTS</literal> environment
+ variable. Using <literal>none</literal> means no RTS flags can be given; <literal>some</literal> means only a minimum of safe options can be given (the default), and <literal>all</literal> (or no argument at all) means that all RTS flags are permitted.</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
+ <entry><option>-with-rtsopts=<replaceable>opts</replaceable></option></entry>
+ <entry>Set the default RTS options to
+ <replaceable>opts</replaceable>.</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-no-link</option></entry>
<entry>Omit linking</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
+ <entry><option>-eventlog</option></entry>
+ <entry>Enable runtime event tracing</entry>
+ <entry>static</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-fno-gen-manifest</option></entry>
<entry>Do not generate a manifest file (Windows only)</entry>
<entry>dynamic</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
+ <row>
+ <entry><option>-fno-shared-implib</option></entry>
+ <entry>Don't generate an import library for a DLL (Windows only)</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
+ <entry><option>-dylib-install-name</option> <replaceable>path</replaceable></entry>
+ <entry>Set the install name (via <literal>-install_name</literal> passed to Apple's
+ linker), specifying the full install path of the library file. Any libraries
+ or executables that link with it later will pick up that path as their
+ runtime search location for it. (Darwin/MacOS X only)</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
</tbody>
</tgroup>
</informaltable>
<entry>Use <replaceable>cmd</replaceable> as the C compiler</entry>
<entry>dynamic</entry>
<entry>-</entry>
+ <row>
+ <entry><option>-pgmlo</option> <replaceable>cmd</replaceable></entry>
+ <entry>Use <replaceable>cmd</replaceable> as the LLVM optimiser</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
+ <entry><option>-pgmlc</option> <replaceable>cmd</replaceable></entry>
+ <entry>Use <replaceable>cmd</replaceable> as the LLVM compiler</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
</row>
<row>
<entry><option>-pgmm</option> <replaceable>cmd</replaceable></entry>
<indexterm><primary><option>-pgmL</option></primary></indexterm>
<indexterm><primary><option>-pgmP</option></primary></indexterm>
<indexterm><primary><option>-pgmc</option></primary></indexterm>
+ <indexterm><primary><option>-pgmlo</option></primary></indexterm>
+ <indexterm><primary><option>-pgmlc</option></primary></indexterm>
<indexterm><primary><option>-pgma</option></primary></indexterm>
<indexterm><primary><option>-pgml</option></primary></indexterm>
<indexterm><primary><option>-pgmdll</option></primary></indexterm>
<entry>-</entry>
</row>
<row>
+ <entry><option>-optlo</option> <replaceable>option</replaceable></entry>
+ <entry>pass <replaceable>option</replaceable> to the LLVM optimiser</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
+ <entry><option>-optlc</option> <replaceable>option</replaceable></entry>
+ <entry>pass <replaceable>option</replaceable> to the LLVM compiler</entry>
+ <entry>dynamic</entry>
+ <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>-optdep</option> <replaceable>option</replaceable></entry>
- <entry>pass <replaceable>option</replaceable> to the dependency generator</entry>
- <entry>dynamic</entry>
- <entry>-</entry>
- </row>
- <row>
<entry><option>-optwindres</option> <replaceable>option</replaceable></entry>
<entry>pass <replaceable>option</replaceable> to <literal>windres</literal>.</entry>
<entry>dynamic</entry>
<entry>Reverse</entry>
</row>
</thead>
+ <tbody>
+ <row>
+ <entry><option>-msse2</option></entry>
+ <entry>(x86 only) Use SSE2 for floating point</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ </tbody>
<tbody>
<row>
<entry><option>-monly-[432]-regs</option></entry>
<row>
<entry><option>-fext-core</option></entry>
<entry>Generate <filename>.hcr</filename> external Core files</entry>
- <entry>static</entry>
+ <entry>dynamic</entry>
<entry>-</entry>
</row>
</tbody>
<entry>-</entry>
</row>
<row>
+ <entry><option>-ddump-llvm</option></entry>
+ <entry>Dump LLVM intermediate code</entry>
+ <entry>dynamic</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-ddump-occur-anal</option></entry>
<entry>Dump occurrence analysis output</entry>
<entry>dynamic</entry>
<entry>-</entry>
</row>
<row>
+ <entry><option>-dsuppress-coercions</option></entry>
+ <entry>Suppress the printing of coercions in Core dumps to make them shorter.</entry>
+ <entry>static</entry>
+ <entry>-</entry>
+ </row>
+ <row>
+ <entry><option>-dsuppress-module-prefixes</option></entry>
+ <entry>Suppress the printing of module qualification prefixes in Core dumps to make them easier to read.</entry>
+ <entry>static</entry>
+ <entry>-</entry>
+ </row>
+ <row>
<entry><option>-dppr-noprags</option></entry>
<entry>Don't output pragma info in dumps</entry>
<entry>static</entry>
<!-- Emacs stuff:
;;; Local Variables: ***
- ;;; mode: xml ***
;;; sgml-parent-document: ("users_guide.xml" "book" "chapter") ***
;;; End: ***
-->