- </sect1>
-
-
-<Sect1 id="options-optimise">
-<Title>Optimisation (code improvement)
-</Title>
-
-<Para>
-<IndexTerm><Primary>optimisation (GHC)</Primary></IndexTerm>
-<IndexTerm><Primary>improvement, code (GHC)</Primary></IndexTerm>
-</Para>
-
-<Para>
-The <Option>-O*</Option> options specify convenient “packages” of optimisation
-flags; the <Option>-f*</Option> options described later on specify
-<Emphasis>individual</Emphasis> optimisations to be turned on/off; the <Option>-m*</Option>
-options specify <Emphasis>machine-specific</Emphasis> optimisations to be turned
-on/off.
-</Para>
-
-<Sect2 id="optimise-pkgs">
-<Title><Option>-O*</Option>: convenient “packages” of optimisation flags.
-</Title>
-
-<Para>
-<IndexTerm><Primary>-O options</Primary></IndexTerm>
-</Para>
-
-<Para>
-There are <Emphasis>many</Emphasis> options that affect the quality of code
-produced by GHC. Most people only have a general goal, something like
-“Compile quickly” or “Make my program run like greased lightning.”
-The following “packages” of optimisations (or lack thereof) should
-suffice.
-</Para>
-
-<Para>
-Once you choose a <Option>-O*</Option> “package,” stick with it—don't chop and
-change. Modules' interfaces <Emphasis>will</Emphasis> change with a shift to a new
-<Option>-O*</Option> option, and you may have to recompile a large chunk of all
-importing modules before your program can again be run
-safely (see <XRef LinkEnd="recomp">).
-</Para>
-
-<Para>
-<VariableList>
-
-<VarListEntry>
-<Term>No <Option>-O*</Option>-type option specified:</Term>
-<IndexTerm><Primary>-O* not specified</Primary></IndexTerm>
-<ListItem>
-<Para>
-This is taken to mean: “Please compile quickly; I'm not over-bothered
-about compiled-code quality.” So, for example: <Command>ghc -c Foo.hs</Command>
-</Para>
-</ListItem>
-</VarListEntry>
-<VarListEntry>
-<Term><Option>-O</Option> or <Option>-O1</Option>:</Term>
-<IndexTerm><Primary>-O option</Primary></IndexTerm>
-<IndexTerm><Primary>-O1 option</Primary></IndexTerm>
-<IndexTerm><Primary>optimise</Primary><secondary>normally</secondary></IndexTerm>
-<ListItem>
-<Para>
-Means: “Generate good-quality code without taking too long about
-it.” Thus, for example: <Command>ghc -c -O Main.lhs</Command>
-</Para>
-</ListItem>
-</VarListEntry>
-<VarListEntry>
-<Term><Option>-O2</Option>:</Term>
-<IndexTerm><Primary>-O2 option</Primary></IndexTerm>
-<IndexTerm><Primary>optimise</Primary><secondary>aggressively</secondary></IndexTerm>
-<ListItem>
-<Para>
-Means: “Apply every non-dangerous optimisation, even if it means
-significantly longer compile times.”
-</Para>
-
-<Para>
-The avoided “dangerous” optimisations are those that can make
-runtime or space <Emphasis>worse</Emphasis> if you're unlucky. They are
-normally turned on or off individually.
-</Para>
-
-<Para>
-At the moment, <Option>-O2</Option> is <Emphasis>unlikely</Emphasis> to produce
-better code than <Option>-O</Option>.
-</Para>
-</ListItem>
-</VarListEntry>
-<VarListEntry>
-<Term><Option>-O2-for-C</Option>:</Term>
-<IndexTerm><Primary>-O2-for-C option</Primary></IndexTerm>
-<IndexTerm><Primary>gcc, invoking with -O2</Primary></IndexTerm>
-<ListItem>
-<Para>
-Says to run GCC with <Option>-O2</Option>, which may be worth a few percent in
-execution speed. Don't forget <Option>-fvia-C</Option>, lest you use the native-code
-generator and bypass GCC altogether!
-</Para>
-</ListItem>
-</VarListEntry>
-<VarListEntry>
-<Term><Option>-Onot</Option>:</Term>
-<IndexTerm><Primary>-Onot option</Primary></IndexTerm>
-<IndexTerm><Primary>optimising, reset</Primary></IndexTerm>
-<ListItem>
-<Para>
-This option will make GHC “forget” any
-<Option>-O</Option>ish options it has seen so far. Sometimes useful;
-for example: <Command>make all
-EXTRA_HC_OPTS=-Onot</Command>.
-</Para>
-</ListItem>
-</VarListEntry>
-<VarListEntry>
-<Term><Option>-Ofile <file></Option>:</Term>
-<IndexTerm><Primary>-Ofile <file> option</Primary></IndexTerm>
-<IndexTerm><Primary>optimising, customised</Primary></IndexTerm>
-<ListItem>
-<Para>
-For those who need <Emphasis>absolute</Emphasis> control over
-<Emphasis>exactly</Emphasis> what options are used (e.g., compiler
-writers, sometimes :-), a list of options can be put in a file and
-then slurped in with <Option>-Ofile</Option>.
-</Para>
-
-<Para>
-In that file, comments are of the
-<Literal>#</Literal>-to-end-of-line variety; blank lines and most
-whitespace is ignored.
-</Para>
-
-<Para>
-Please ask if you are baffled and would like an example of <Option>-Ofile</Option>!
-</Para>
-</ListItem>
-</VarListEntry>
-</VariableList>
-</Para>
-
-<Para>
-At Glasgow, we don't use a <Option>-O*</Option> flag for day-to-day work. We use
-<Option>-O</Option> to get respectable speed; e.g., when we want to measure
-something. When we want to go for broke, we tend to use <Option>-O -fvia-C
--O2-for-C</Option> (and we go for lots of coffee breaks).
-</Para>
-
-<Para>
-The easiest way to see what <Option>-O</Option> (etc.) “really mean” is to run with
-<Option>-v</Option>, then stand back in amazement. Alternatively, just look at the
-<Literal>HsC_minus<blah></Literal> lists in the GHC driver script.
-</Para>
-
-</Sect2>
-
-<Sect2>
-<Title><Option>-f*</Option>: platform-independent flags</Title>
-
-<Para>
-<IndexTerm><Primary>-f* options (GHC)</Primary></IndexTerm>
-<IndexTerm><Primary>-fno-* options (GHC)</Primary></IndexTerm>
-</Para>
-
-<Para>
-Flags can be turned <Emphasis>off</Emphasis> individually. (NB: I hope you have a
-good reason for doing this…) To turn off the <Option>-ffoo</Option> flag, just use
-the <Option>-fno-foo</Option> flag.<IndexTerm><Primary>-fno-<opt> anti-option</Primary></IndexTerm> So, for
-example, you can say <Option>-O2 -fno-strictness</Option>, which will then drop out
-any running of the strictness analyser.
-</Para>
-
-<Para>
-The options you are most likely to want to turn off are:
-
-<ItemizedList>
-<ListItem>
-
-<Para>
-<Option>-fno-strictness</Option><IndexTerm><Primary>-fno-strictness option</Primary></IndexTerm> (strictness
-analyser, because it is sometimes slow),
-</Para>
-</ListItem>
-<ListItem>
-
-<Para>
-<Option>-fno-specialise</Option><IndexTerm><Primary>-fno-specialise option</Primary></IndexTerm> (automatic
-specialisation of overloaded functions, because it can make your code
-bigger) (US spelling also accepted), and
-</Para>
-</ListItem>
-<ListItem>
-
-<Para>
-<Option>-fno-cpr-analyse</Option><IndexTerm><Primary>-fno-cpr-analyse option</Primary></IndexTerm> switches off the CPR (constructed product
-result) analyser.
-</Para>
-</ListItem>
-
-</ItemizedList>
-
-</Para>
-
-<Para>
-Should you wish to turn individual flags <Emphasis>on</Emphasis>, you are advised
-to use the <Option>-Ofile</Option> option, described above. Because the order in
-which optimisation passes are run is sometimes crucial, it's quite
-hard to do with command-line options.
-</Para>
-
-<Para>
-Here are some “dangerous” optimisations you <Emphasis>might</Emphasis> want to try:
-<VariableList>
-
-<VarListEntry>
-<Term><Option>-fvia-C</Option>:</Term>
-<ListItem>
-<Para>
-<IndexTerm><Primary>-fvia-C option</Primary></IndexTerm>
-<IndexTerm><Primary>native code generator, turning off</Primary></IndexTerm>
-</Para>
-
-<Para>
-Compile via C, and don't use the native-code generator. (There are many
-cases when GHC does this on its own.) You might pick up a little bit of
-speed by compiling via C (e.g. for floating-point intensive code on Intel).
-If you use <Function>_casm_</Function>s (which are utterly
-deprecated), you probably <Emphasis>have</Emphasis> to use
-<Option>-fvia-C</Option>.
-</Para>
-
-<Para>
-The lower-case incantation, <Option>-fvia-c</Option>, is synonymous.
-</Para>
-
-<Para>
-Compiling via C will probably be slower (in compilation time) than
-using GHC's native code generator.
-</Para>
-</ListItem>
-</VarListEntry>
-<VarListEntry>
-<Term><Option>-funfolding-interface-threshold<n></Option>:</Term>
-<ListItem>
-<Para>
-<IndexTerm><Primary>-funfolding-interface-threshold option</Primary></IndexTerm>
-<IndexTerm><Primary>inlining, controlling</Primary></IndexTerm>
-<IndexTerm><Primary>unfolding, controlling</Primary></IndexTerm>
-(Default: 30) By raising or lowering this number, you can raise or
-lower the amount of pragmatic junk that gets spewed into interface
-files. (An unfolding has a “size” that reflects the cost in terms
-of “code bloat” of expanding that unfolding in another module. A
-bigger function would be assigned a bigger cost.)
-</Para>
-</ListItem>
-</VarListEntry>
-<VarListEntry>
-<Term><Option>-funfolding-creation-threshold<n></Option>:</Term>
-<ListItem>
-<Para>
-<IndexTerm><Primary>-funfolding-creation-threshold option</Primary></IndexTerm>
-<IndexTerm><Primary>inlining, controlling</Primary></IndexTerm>
-<IndexTerm><Primary>unfolding, controlling</Primary></IndexTerm>
-(Default: 30) This option is similar to
-<Option>-funfolding-interface-threshold</Option>, except that it governs unfoldings
-within a single module. Increasing this figure is more likely to
-result in longer compile times than faster code. The next option is
-more useful:
-</Para>
-</ListItem>
-</VarListEntry>
-<VarListEntry>
-<Term><Option>-funfolding-use-threshold<n></Option>:</Term>
-<ListItem>
-<Para>
-<IndexTerm><Primary>-funfolding-use-threshold option</Primary></IndexTerm>
-<IndexTerm><Primary>inlining, controlling</Primary></IndexTerm>
-<IndexTerm><Primary>unfolding, controlling</Primary></IndexTerm>
-(Default: 8) This is the magic cut-off figure for unfolding: below
-this size, a function definition will be unfolded at the call-site,
-any bigger and it won't. The size computed for a function depends on
-two things: the actual size of the expression minus any discounts that
-apply (see <Option>-funfolding-con-discount</Option>).
-</Para>
-</ListItem>
-</VarListEntry>
-
-<VarListEntry>
-<Term><Option>-funfolding-update-in-place<n></Option>:</Term>
-<ListItem>
-Switches on an experimental "optimisation". Switching it on makes the compiler
-a little keener to inline a function that returns a constructor, if the context is
-that of a thunk.
-<ProgramListing>
- x = plusInt a b
-</ProgramListing>
-If we inlined plusInt we might get an opportunity to use update-in-place for
-the thunk 'x'.
-</Para>
-</ListItem>
-</VarListEntry>
-
-<VarListEntry>
-<Term><Option>-funbox-strict-fields</Option>:</Term>
-<ListItem>
-<Para>
-<IndexTerm><Primary>-funbox-strict-fields option</Primary></IndexTerm>
-<IndexTerm><Primary>strict constructor fields</Primary></IndexTerm>
-<IndexTerm><Primary>constructor fields, strict</Primary></IndexTerm>
-</Para>
-
-<Para>
-This option causes all constructor fields which are marked strict
-(i.e. “!”) to be unboxed or unpacked if possible. For example:
-</Para>
-
-<Para>
-
-<ProgramListing>
-data T = T !Float !Float
-</ProgramListing>
-
-</Para>
-
-<Para>
-will create a constructor <Literal>T</Literal> containing two unboxed floats if the
-<Option>-funbox-strict-fields</Option> flag is given. This may not always be an
-optimisation: if the <Function>T</Function> constructor is scrutinised and the floats
-passed to a non-strict function for example, they will have to be
-reboxed (this is done automatically by the compiler).
-</Para>
-
-<Para>
-This option should only be used in conjunction with <Option>-O</Option>, in order to
-expose unfoldings to the compiler so the reboxing can be removed as
-often as possible. For example:
-</Para>
-
-<Para>
-
-<ProgramListing>
-f :: T -> Float
-f (T f1 f2) = f1 + f2
-</ProgramListing>
-
-</Para>
-
-<Para>
-The compiler will avoid reboxing <Function>f1</Function> and <Function>f2</Function> by inlining <Function>+</Function> on
-floats, but only when <Option>-O</Option> is on.
-</Para>
-
-<Para>
-Any single-constructor data is eligible for unpacking; for example
-</Para>
-
-<Para>
-
-<ProgramListing>
-data T = T !(Int,Int)
-</ProgramListing>
-
-</Para>
-
-<Para>
-will store the two <Literal>Int</Literal>s directly in the <Function>T</Function> constructor, by flattening
-the pair. Multi-level unpacking is also supported:
-</Para>
-
-<Para>
-
-<ProgramListing>
-data T = T !S
-data S = S !Int !Int
-</ProgramListing>
-
-</Para>
-
-<Para>
-will store two unboxed <Literal>Int#</Literal>s directly in the <Function>T</Function> constructor.
-</Para>
-</ListItem>
-</VarListEntry>
-<VarListEntry>
-<Term><Option>-fsemi-tagging</Option>:</Term>
-<ListItem>
-<Para>
-This option (which <Emphasis>does not work</Emphasis> with the native-code generator)
-tells the compiler to add extra code to test for already-evaluated
-values. You win if you have lots of such values during a run of your
-program, you lose otherwise. (And you pay in extra code space.)
-</Para>
-
-<Para>
-We have not played with <Option>-fsemi-tagging</Option> enough to recommend it.
-(For all we know, it doesn't even work anymore… Sigh.)
-</Para>
-</ListItem>
-</VarListEntry>
-<VarListEntry>
-<Term><Option>-fexcess-precision</Option>:</Term>
-<ListItem>
-<Para>
-When this option is given, intermediate floating point values can have
-a <Emphasis>greater</Emphasis> precision/range than the final type.
-Generally this is a good thing, but some programs may rely on the
-exact precision/range of <Literal>Float</Literal>/<Literal>Double</Literal>
-values and should not use this option for their compilation.
-</Para>
-</ListItem>
-</VarListEntry>
-</VariableList>
-</Para>
-
-</Sect2>
-
-<Sect2>
-<Title><Option>-m*</Option>: platform-specific flags</Title>
-
-<Para>
-<IndexTerm><Primary>-m* options (GHC)</Primary></IndexTerm>
-<IndexTerm><Primary>platform-specific options</Primary></IndexTerm>
-<IndexTerm><Primary>machine-specific options</Primary></IndexTerm>
-</Para>
-
-<Para>
-Some flags only make sense for particular target platforms.
-</Para>
-
-<Para>
-<VariableList>
-
-<VarListEntry>
-<Term><Option>-mv8</Option>:</Term>
-<ListItem>
-<Para>
-(SPARC machines)<IndexTerm><Primary>-mv8 option (SPARC only)</Primary></IndexTerm>
-Means to pass the like-named option to GCC; it says to use the
-Version 8 SPARC instructions, notably integer multiply and divide.
-The similiar <Option>-m*</Option> GCC options for SPARC also work, actually.
-</Para>
-</ListItem>
-</VarListEntry>
-<VarListEntry>
-<Term><Option>-mlong-calls</Option>:</Term>
-<ListItem>
-<Para>
-(HPPA machines)<IndexTerm><Primary>-mlong-calls option (HPPA only)</Primary></IndexTerm>
-Means to pass the like-named option to GCC. Required for Very Big
-modules, maybe. (Probably means you're in trouble…)
-</Para>
-</ListItem>
-</VarListEntry>
-<VarListEntry>
-<Term><Option>-monly-[32]-regs</Option>:</Term>
-<ListItem>
-<Para>
-(iX86 machines)<IndexTerm><Primary>-monly-N-regs option (iX86 only)</Primary></IndexTerm>
-GHC tries to “steal” four registers from GCC, for performance
-reasons; it almost always works. However, when GCC is compiling some
-modules with four stolen registers, it will crash, probably saying:
-
-<Screen>
-Foo.hc:533: fixed or forbidden register was spilled.
-This may be due to a compiler bug or to impossible asm
-statements or clauses.
-</Screen>
-
-Just give some registers back with <Option>-monly-N-regs</Option>. Try `3' first,
-then `2'. If `2' doesn't work, please report the bug to us.
-</Para>
-</ListItem>
-</VarListEntry>
-</VariableList>
-</Para>
-
-</Sect2>
-
-<Sect2 id="optimise-C-compiler">
-<Title>Code improvement by the C compiler.
-</Title>
-
-<Para>
-<IndexTerm><Primary>optimisation by GCC</Primary></IndexTerm>
-<IndexTerm><Primary>GCC optimisation</Primary></IndexTerm>
-</Para>
-
-<Para>
-The C compiler (GCC) is run with <Option>-O</Option> turned on. (It has
-to be, actually).
-</Para>
-
-<Para>
-If you want to run GCC with <Option>-O2</Option>—which may be worth a few
-percent in execution speed—you can give a
-<Option>-O2-for-C</Option><IndexTerm><Primary>-O2-for-C option</Primary></IndexTerm> option.
-</Para>
-
-</Sect2>
-
-</Sect1>
-
-<Sect1 id="options-phases">
-<Title>Options related to a particular phase
-</Title>
-
-<Sect2 id="c-pre-processor">
-<Title>The C pre-processor
-</Title>
-
-<Para>
-<IndexTerm><Primary>pre-processing: cpp</Primary></IndexTerm>
-<IndexTerm><Primary>C pre-processor options</Primary></IndexTerm>
-<IndexTerm><Primary>cpp, pre-processing with</Primary></IndexTerm>
-</Para>
-
-<Para>
-The C pre-processor <Command>cpp</Command> is run over your Haskell code only if the
-<Option>-cpp</Option> option <IndexTerm><Primary>-cpp option</Primary></IndexTerm> is given. Unless you are
-building a large system with significant doses of conditional
-compilation, you really shouldn't need it.
-<VariableList>
-
-<VarListEntry>
-<Term><Option>-D<foo></Option>:</Term>
-<ListItem>
-<Para>
-<IndexTerm><Primary>-D<name> option</Primary></IndexTerm>
-Define macro <Constant><foo></Constant> in the usual way. NB: does <Emphasis>not</Emphasis> affect
-<Option>-D</Option> macros passed to the C compiler when compiling via C! For those,
-use the <Option>-optc-Dfoo</Option> hack… (see <XRef LinkEnd="forcing-options-through">).
-</Para>
-</ListItem>
-</VarListEntry>
-<VarListEntry>
-<Term><Option>-U<foo></Option>:</Term>
-<ListItem>
-<Para>
-<IndexTerm><Primary>-U<name> option</Primary></IndexTerm>
-Undefine macro <Command><foo></Command> in the usual way.
-</Para>
-</ListItem>
-</VarListEntry>
-<VarListEntry>
-<Term><Option>-I<dir></Option>:</Term>
-<ListItem>
-<Para>
-<IndexTerm><Primary>-I<dir> option</Primary></IndexTerm>
-Specify a directory in which to look for <Literal>#include</Literal> files, in
-the usual C way.
-</Para>
-</ListItem>
-</VarListEntry>
-</VariableList>
-</Para>
-
-<Para>
-The GHC driver pre-defines several macros when processing Haskell
-source code (<Filename>.hs</Filename> or <Filename>.lhs</Filename> files):
-</Para>
-
-<Para>
-<VariableList>
-
-<VarListEntry>
-<Term><Constant>__HASKELL98__</Constant>:</Term>
-<ListItem>
-<Para>
-<IndexTerm><Primary>__HASKELL98__</Primary></IndexTerm>
-If defined, this means that GHC supports the language defined by the
-Haskell 98 report.
-</Para>
-</ListItem>
-</VarListEntry>
-<VarListEntry>
-<Term><Constant>__HASKELL__=98</Constant>:</Term>
-<ListItem>
-<Para>
-<IndexTerm><Primary>__HASKELL__</Primary></IndexTerm>
-In GHC 4.04 and later, the <Constant>__HASKELL__</Constant> macro is defined as having
-the value <Constant>98</Constant>.
-</Para>
-</ListItem>
-</VarListEntry>
-<VarListEntry>
-<Term><Constant>__HASKELL1__</Constant>:</Term>
-<ListItem>
-<Para>
-<IndexTerm><Primary>__HASKELL1__ macro</Primary></IndexTerm>
-If defined to <Emphasis>n</Emphasis>, that means GHC supports the Haskell language
-defined in the Haskell report version <Emphasis>1.n</Emphasis>. Currently 5. This
-macro is deprecated, and will probably disappear in future versions.
-</Para>
-</ListItem>
-</VarListEntry>
-<VarListEntry>
-<Term><Constant>__GLASGOW_HASKELL__</Constant>:</Term>
-<ListItem>
-<Para>
-<IndexTerm><Primary>__GLASGOW_HASKELL__ macro</Primary></IndexTerm>
-For version <Emphasis>n</Emphasis> of the GHC system, this will be <Literal>#define</Literal>d to
-<Emphasis>100n</Emphasis>. So, for version 4.00, it is 400.
-</Para>
-
-<Para>
-With any luck, <Constant>__GLASGOW_HASKELL__</Constant> will be undefined in all other
-implementations that support C-style pre-processing.
-</Para>
-
-<Para>
-(For reference: the comparable symbols for other systems are:
-<Constant>__HUGS__</Constant> for Hugs and <Constant>__HBC__</Constant> for Chalmers.)
-</Para>
-
-<Para>
-NB. This macro is set when pre-processing both Haskell source and C
-source, including the C source generated from a Haskell module
-(i.e. <Filename>.hs</Filename>, <Filename>.lhs</Filename>, <Filename>.c</Filename> and <Filename>.hc</Filename> files).
-</Para>
-</ListItem>
-</VarListEntry>
-<VarListEntry>
-<Term><Constant>__CONCURRENT_HASKELL__</Constant>:</Term>
-<ListItem>
-<Para>
-<IndexTerm><Primary>__CONCURRENT_HASKELL__ macro</Primary></IndexTerm>
-This symbol is defined when pre-processing Haskell (input) and
-pre-processing C (GHC output). Since GHC from verion 4.00 now
-supports concurrent haskell by default, this symbol is always defined.
-</Para>
-</ListItem>
-</VarListEntry>
-<VarListEntry>
-<Term><Constant>__PARALLEL_HASKELL__</Constant>:</Term>
-<ListItem>
-<Para>
-<IndexTerm><Primary>__PARALLEL_HASKELL__ macro</Primary></IndexTerm>
-Only defined when <Option>-parallel</Option> is in use! This symbol is defined when
-pre-processing Haskell (input) and pre-processing C (GHC output).
-</Para>
-</ListItem>
-</VarListEntry>
-</VariableList>
-</Para>
-
-<Para>
-Options other than the above can be forced through to the C
-pre-processor with the <Option>-opt</Option> flags (see
-<XRef LinkEnd="forcing-options-through">).
-</Para>
-
-<Para>
-A small word of warning: <Option>-cpp</Option> is not friendly to “string
-gaps”.<IndexTerm><Primary>-cpp vs string gaps</Primary></IndexTerm><IndexTerm><Primary>string gaps vs
--cpp</Primary></IndexTerm>. In other words, strings such as the following:
-</Para>
-
-<Para>
-
-<ProgramListing>
-strmod = "\
-\ p \
-\ "
-</ProgramListing>
-
-</Para>
-
-<Para>
-don't work with <Option>-cpp</Option>; <Filename>/usr/bin/cpp</Filename> elides the
-backslash-newline pairs.
-</Para>
-
-<Para>
-However, it appears that if you add a space at the end of the line,
-then <Command>cpp</Command> (at least GNU <Command>cpp</Command> and possibly other <Command>cpp</Command>s)
-leaves the backslash-space pairs alone and the string gap works as
-expected.
-</Para>
-
-</Sect2>
-
-<Sect2 id="options-C-compiler">
-<Title>Options affecting the C compiler (if applicable)
-</Title>
-
-<Para>
-<IndexTerm><Primary>include-file options</Primary></IndexTerm>
-<IndexTerm><Primary>C compiler options</Primary></IndexTerm>
-<IndexTerm><Primary>GCC options</Primary></IndexTerm>
-</Para>
-
-<Para>
-At the moment, quite a few common C-compiler options are passed on
-quietly to the C compilation of Haskell-compiler-generated C files.
-THIS MAY CHANGE. Meanwhile, options so sent are:
-</Para>
-
-<Para>
-
-<InformalTable>
-<TGroup Cols="2">
-<ColSpec Align="Left" Colsep="0">
-<ColSpec Align="Left" Colsep="0">
-<TBody>
-<Row>
-<Entry><Option>-ansi</Option> </Entry>
-<Entry> do ANSI C (not K&R) </Entry>
-</Row>
-<Row>
-<Entry>
-<Option>-pedantic</Option> </Entry>
-<Entry> be so</Entry>
-</Row>
-<Row>
-<Entry>
-<Option>-dgcc-lint</Option> </Entry>
-<Entry> (hack) short for “make GCC very paranoid”</Entry>
-</Row>
-
-</TBody>
-
-</TGroup>
-</InformalTable>