NAME
GHC - the Glasgow Haskell Compiler
SYNOPSIS
ghc [option|filename]...
DESCRIPTION
This manual page documents briefly the ghc command. Extensive documentation is available in various other formats including DVI, PostScript and HTML; see below.
Each of GHC's command line options is classified as either static or dynamic. A static flag may only be specified on the command line, whereas a dynamic flag may also be given in an OPTIONS pragma in a source file or set from the GHCi command-line with :set.
As a rule of thumb, all the language options are dynamic, as are the warning options and the debugging options.
The rest are static, with the notable exceptions of -v, -cpp, -fasm, -fvia-C, and -#include. The OPTIONS sections lists the status of each flag.
Common suffixes of file names for Haskell are:
- .hs
-
Haskell source code; preprocess, compile
- .lhs
-
literate Haskell source; unlit, preprocess, compile
- .hi
-
Interface file; contains information about exported symbols
- .hc
-
intermediate C files
- .x_o
-
way x object files; common ways are: p, u, s
- .x_hi
-
way x interface files
OPTIONS
Help and verbosity options
-? -help -v -vn --version --numeric-version --print-libdir
Which phases to run
-E -C -S -c
Redirecting output
-hcsuf suffix -hidir dir -hisuf suffix -o filename -odir dir -ohi filename -osuf suffix
Keeping intermediate files
-keep-hc-file -keep-s-file -keep-raw-s-file -keep-tmp-files
Temporary files
-tmpdir
Finding imports
-idir1:dir2:... -i
Interface file options
-ddump-hi -ddump-hi-diffs --show-iface file
Recompilation checking
-no-recomp -recomp
Interactive-mode options
-ignore-dot-ghci -read-dot-ghci
Packages
-package name -package-conf file -package-name name
Language options
-fallow-overlapping-instances -fno-allow-overlapping-instances -fallow-undecidable-instances -fno-allow-undecidable-instances -fgenerics -fno-fgenerics -fglasgow-exts -fno-glasgow-exts -ffi or -fffi -fno-ffi -fwith -fno-with -fignore-asserts -fno-ignore-asserts -fno-implicit-prelude -fno-monomorphism-restriction -firrefutable-tuples -fno-irrefutable-tuples -fcontext-stackn
Warnings
-W -w -w -Wall -w -fwarn-deprecations -fno-warn-deprecations -fwarn-duplicate-exports -fno-warn-duplicate-exports -fwarn-hi-shadowing -fno-warn-hi-shadowing -fwarn-incomplete-patterns -fno-warn-incomplete-patterns -fwarn-misc -fno-warn-misc -fwarn-missing-fields -fno-warn-missing-fields -fwarn-missing-methods -fno-warn-missing-methods -fwarn-missing-signatures -fno-warn-missing-signatures -fwarn-name-shadowing -fno-warn-name-shadowing -fwarn-overlapping-patterns -fno-warn-overlapping-patterns -fwarn-simple-patterns -fno-warn-simple-patterns -fwarn-type-defaults -fno-warn-type-defaults -fwarn-unused-binds -fno-warn-unused-binds -fwarn-unused-imports -fno-warn-unused-imports -fwarn-unused-matches -fno-warn-unused-matches
Optimisation levels
-O -O0 -On -O0
Individual optimisations
-fcase-merge -fno-case-merge -fdicts-strict -fno-dicts-strict -fdo-eta-reduction -fno-do-eta-reduction -fdo-lambda-eta-expansion -fno-do-lambda-eta-expansion -fexcess-precision -fno-excess-precision -ffoldr-build-on -fno-foldr-build-on -fignore-asserts -fno-ignore-asserts -fignore-interface-pragmas -fno-ignore-interface-pragmas -flet-no-escape -fno-let-no-escape -fliberate-case-threshold -fno-liberate-case-threshold -fomit-interface-pragmas -fno-omit-interface-pragmas -fmax-worker-args -fmax-simplifier-iterations -fno-cpr -fno-cse -fno-pre-inlining -fno-strictness -fnumbers-strict -fno-numbers-strict -funbox-strict-fields -fno-unbox-strict-fields -funfolding-creation-threshold -fno-unfolding-creation-threshold -funfolding-fun-discount -fno-unfolding-fun-discount -funfolding-keeness-factor -fno-unfolding-keeness-factor -funfolding-update-in-place -fno-unfolding-update-in-place -funfolding-use-threshold -fno-unfolding-use-threshold -fusagesp -fno-usagesp
Profiling options
-auto -no-auto -auto-all -no-auto-all -auto-dicts -no-auto-dicts -caf-all -no-caf-all -prof -ticky
Parallelism options
-gransim -parallel -smp
C pre-processor options
-cpp -Dsymbol="value" -U -Usymbol -Idir
C compiler options
-#include file
Code generation options
-fasm -fvia-C -fno-code
Linking options
-dynamic -llib -Ldir -package name -framework name -framework-path name -split-objs -static -no-hs-main
Replacing phases
-pgmL cmd -pgmP cmd -pgmc cmd -pgma cmd -pgml cmd -pgmdll cmd -pgmdep cmd -pgmF cmd
Forcing options to particular phases
-optL option -optP option -optc option -opta option -optl option -optdll option -optdep option
Platform-specific options
-mv8 -monly-[32]-regs
External core file options
-fext-core
Compiler debugging options
-dcore-lint -ddump-absC -ddump-asm -ddump-bcos -ddump-cpranal -ddump-cse -ddump-deriv -ddump-ds -ddump-flatC -ddump-foreign -ddump-inlinings -ddump-occur-anal -ddump-parsed -ddump-realC -ddump-rn -ddump-rules -ddump-sat -ddump-simpl -ddump-simpl-iterations -ddump-spec -ddump-stg -ddump-stranal -ddump-tc -ddump-types -ddump-usagesp -ddump-worker-wrapper -ddump-rn-trace -ddump-rn-stats -ddump-stix -ddump-simpl-stats -dppr-debug -dppr-noprags -dppr-user-length -dsource-stats -dstg-lint -dstg-stats -dusagesp-lint -dverbose-core2core -dverbose-stg2stg -unreg
Misc compiler options
-funfold-casms-in-hi-file -femit-extern-decls -fglobalise-toplev-names -fno-hi-version-check -dno-black-holing -fno-method-sharing -fno-prune-decls -fno-prune-tydecls -fhistory-size -funregisterised -fno-asm-mangling
HELP AND VERBOSITY OPTIONS
- -?
-
help [static]
- -help
-
help [static]
- -v
-
verbose mode (equivalent to -v3) [dynamic]
- -vn
-
set verbosity level [dynamic]
- --version
-
display GHC version [static]
- --numeric-version
-
display GHC version (numeric only) [static]
- --print-libdir
-
display GHC library directory [static]
WHICH PHASES TO RUN
- -E
-
Stop after preprocessing (
.hsppfile) [static]
- -C
-
Stop after generating C (
.hcfile) [static]
- -S
-
Stop after generating assembly (
.sfile) [static]
- -c
-
Stop after compiling to object code (
.ofile) [static]
REDIRECTING OUTPUT
- -hcsuf suffix
-
set the suffix to use for intermediate C files [static]
- -hidir dir
-
set directory for interface files [static]
- -hisuf suffix
-
set the suffix to use for interface files [static]
- -o filename
-
set output filename [static]
- -odir dir
-
set output directory [static]
- -ohi filename
-
set the filename in which to put the interface [static]
- -osuf suffix
-
set the output file suffix [static]
KEEPING INTERMEDIATE FILES
- -keep-hc-file
-
retain intermediate
.hcfiles [static]
- -keep-s-file
-
retain intermediate
.sfiles [static]
- -keep-raw-s-file
-
retain intermediate
.raw_sfiles [static]
- -keep-tmp-files
-
retain all intermediate temporary files [static]
TEMPORARY FILES
- -tmpdir
-
set the directory for temporary files [static]
FINDING IMPORTS
- -idir1:dir2:...
-
add dir1, dir2, etc. to import path [static]
- -i
-
Empty the import directory list [static]
INTERFACE FILE OPTIONS
- -ddump-hi
-
Dump the new interface to stdout [dynamic]
- -ddump-hi-diffs
-
Show the differences vs. the old interface [dynamic]
- --show-iface file
-
Read the interface in file and dump it as text to
stdout. [static]
RECOMPILATION CHECKING
- -no-recomp
-
Turn off recompilation checking [static]
INTERACTIVE-MODE OPTIONS
- -ignore-dot-ghci
-
Disable reading of .ghci files [static]
- -read-dot-ghci
-
Enable reading of .ghci files [static]
PACKAGES
- -package name
-
Use package name [static]
- -package-conf file
-
Load more packages from file [static]
- -package-name name
-
Compile code for package name [static]
LANGUAGE OPTIONS
- -fallow-overlapping-instances
-
Enable overlapping instances [dynamic]
- -fallow-undecidable-instances
-
Enable undecidable instances [dynamic]
- -fgenerics
-
Enable generics [dynamic]
- -fglasgow-exts
-
Enable most language extensions [dynamic]
- -ffi or -fffi
-
Enable foreign function interface (implied by -fglasgow-exts) [dynamic]
- -fwith
-
Enable deprecated
withkeyword [dynamic]
- -fignore-asserts
-
Ignore assertions [dynamic]
- -fno-implicit-prelude
-
Don't implicitly
import Prelude[dynamic]
- -fno-monomorphism-restriction
-
Disable the monomorphism restriction [dynamic]
- -firrefutable-tuples
-
Make tuple pattern matching irrefutable [dynamic]
- -fcontext-stackn
-
set the limit for context reduction [dynamic]
WARNINGS
- -W
-
enable normal warnings [dynamic]
- -w
-
disable all warnings [dynamic]
- -Wall
-
enable all warnings [dynamic]
- -fwarn-deprecations
-
warn about uses of functions & types that are deprecated [dynamic]
- -fwarn-duplicate-exports
-
warn when an entity is exported multiple times [dynamic]
- -fwarn-hi-shadowing
-
warn when a
.hifile in the current directory shadows a library [dynamic]
- -fwarn-incomplete-patterns
-
warn when a pattern match could fail [dynamic]
- -fwarn-misc
-
enable miscellaneous warnings [dynamic]
- -fwarn-missing-fields
-
warn when fields of a record are uninitialised [dynamic]
- -fwarn-missing-methods
-
warn when class methods are undefined [dynamic]
- -fwarn-missing-signatures
-
warn about top-level functions without signatures [dynamic]
- -fwarn-name-shadowing
-
warn when names are shadowed [dynamic]
- -fwarn-overlapping-patterns
-
warn about overlapping patterns [dynamic]
- -fwarn-simple-patterns
-
warn about lambda-patterns that can fail [dynamic]
- -fwarn-type-defaults
-
warn when defaulting happens [dynamic]
- -fwarn-unused-binds
-
warn about bindings that are unused [dynamic]
- -fwarn-unused-imports
-
warn about unnecessary imports [dynamic]
- -fwarn-unused-matches
-
warn about variables in patterns that aren't used [dynamic]
OPTIMISATION LEVELS
- -O
-
Enable default optimisation (level 1) [static]
- -On
-
Set optimisation level n [static]
INDIVIDUAL OPTIMISATIONS
- -fcase-merge
-
Enable case-merging [static]
- -fdicts-strict
-
Make dictionaries strict [dynamic]
- -fdo-eta-reduction
-
Enable eta-reduction [static]
- -fdo-lambda-eta-expansion
-
Enable lambda eta-reduction [static]
- -fexcess-precision
-
Enable excess intermediate precision [static]
- -ffoldr-build-on
-
Enable foldr-build optimisation [static]
- -fignore-asserts
-
Ignore assertions in the source [static]
- -fignore-interface-pragmas
-
Ignore pragmas in interface files [static]
- -flet-no-escape
-
Enable let-no-escape optimisation [static]
- -fliberate-case-threshold
-
Tweak the liberate-case optimisation (default: 10) [static]
- -fomit-interface-pragmas
-
Don't generate interface pragmas [static]
- -fmax-worker-args
-
If a worker has that many arguments, none will be unpacked anymore (default: 10) [static]
- -fmax-simplifier-iterations
-
Set the max iterations for the simplifier [static]
- -fno-cpr
-
Turn off CPR analysis [static]
- -fno-cse
-
Turn off common sub-expression [static]
- -fno-pre-inlining
-
Turn off pre-inlining [static]
- -fno-strictness
-
Turn off strictness analysis [static]
- -fnumbers-strict
-
Make numbers strict [dynamic]
- -funbox-strict-fields
-
Flatten strict constructor fields [static]
- -funfolding-creation-threshold
-
Tweak unfolding settings [static]
- -funfolding-fun-discount
-
Tweak unfolding settings [static]
- -funfolding-keeness-factor
-
Tweak unfolding settings [static]
- -funfolding-update-in-place
-
Tweak unfolding settings [static]
- -funfolding-use-threshold
-
Tweak unfolding settings [static]
- -fusagesp
-
Turn on UsageSP analysis [static]
PROFILING OPTIONS
- -auto
-
Auto-add
_scc_s to all exported functions [static]
- -auto-all
-
Auto-add
_scc_s to all top-level functions [static]
- -auto-dicts
-
Auto-add
_scc_s to all dictionaries [static]
- -caf-all
-
Auto-add
_scc_s to all CAFs [static]
- -prof
-
Turn on profiling [static]
- -ticky
-
Turn on ticky-ticky profiling [static]
PARALLELISM OPTIONS
- -gransim
-
Enable GRANSIM [static]
- -parallel
-
Enable Parallel Haskell [static]
- -smp
-
Enable SMP support [static]
C PRE-PROCESSOR OPTIONS
- -cpp
-
Run the C pre-processor on Haskell source files [dynamic]
- -Dsymbol="value"
-
Define a symbol in the C pre-processor [dynamic]
- -Usymbol
-
Undefine a symbol in the C pre-processor [dynamic]
- -Idir
-
Add dir to the directory search list for
#includefiles [static]
C COMPILER OPTIONS
- -#include file
-
Include file when compiling the .hc file [dynamic]
CODE GENERATION OPTIONS
- -fasm
-
Use the native code generator [dynamic]
- -fvia-C
-
Compile via C [dynamic]
- -fno-code
-
Omit code generation [static]
LINKING OPTIONS
- -dynamic
-
Use dynamic Haskell libraries (if available) [static]
- -llib
-
Link in library lib [static]
- -Ldir
-
Add dir to the list of directories searched for libraries [static]
- -package name
-
Link in package name [static]
- -framework name
-
On Darwin/MacOS X only, link in the framework name. This option corresponds to the -framework option for Apple's Linker. [static]
- -framework-path name
-
On Darwin/MacOS X only, add dir to the list of directories searched for frameworks. This option corresponds to the -F option for Apple's Linker. [static]
- -split-objs
-
Split objects (for libraries) [static]
- -static
-
Use static Haskell libraries [static]
- -no-hs-main
-
Don't asssume this program contains
main[static]
REPLACING PHASES
- -pgmL cmd
-
Use cmd as the literate pre-processor [static]
- -pgmP cmd
-
Use cmd as the C pre-processor (with -cpp only) [static]
- -pgmc cmd
-
Use cmd as the C compiler [static]
- -pgma cmd
-
Use cmd as the assembler [static]
- -pgml cmd
-
Use cmd as the linker [static]
- -pgmdll cmd
-
Use cmd as the DLL generator [static]
- -pgmdep cmd
-
Use cmd as the dependency generator [static]
- -pgmF cmd
-
Use cmd as the pre-processor (with -F only) [static]
FORCING OPTIONS TO PARTICULAR PHASES
- -optL option
-
pass option to the literate pre-processor [dynamic]
- -optP option
-
pass option to cpp (with -cpp only) [dynamic]
- -optc option
-
pass option to the C compiler [dynamic]
- -opta option
-
pass option to the assembler [dynamic]
- -optl option
-
pass option to the linker [static]
- -optdll option
-
pass option to the DLL generator [static]
- -optdep option
-
pass option to the dependency generator [static]
PLATFORM-SPECIFIC OPTIONS
- -mv8
-
(SPARC only) enable version 8 support [static]
- -monly-[32]-regs
-
(x86 only) give some registers back to the C compiler [dynamic]
EXTERNAL CORE FILE OPTIONS
- -fext-core
-
Generate .hcr external Core files [static]
COMPILER DEBUGGING OPTIONS
- -dcore-lint
-
Turn on internal sanity checking [dynamic]
- -ddump-absC
-
Dump abstract C [dynamic]
- -ddump-asm
-
Dump assembly [dynamic]
- -ddump-bcos
-
Dump interpreter byte code [dynamic]
- -ddump-cpranal
-
Dump output from CPR analysis [dynamic]
- -ddump-cse
-
Dump CSE output [dynamic]
- -ddump-deriv
-
Dump deriving output [dynamic]
- -ddump-ds
-
Dump desugarer output [dynamic]
- -ddump-flatC
-
Dump `flat' C [dynamic]
- -ddump-foreign
-
Dump
foreign exportstubs [dynamic]
- -ddump-inlinings
-
Dump inlining info [dynamic]
- -ddump-occur-anal
-
Dump occurrence analysis output [dynamic]
- -ddump-parsed
-
Dump parse tree [dynamic]
- -ddump-realC
-
Dump `real' C [dynamic]
- -ddump-rn
-
Dump renamer output [dynamic]
- -ddump-rules
-
Dump rules [dynamic]
- -ddump-sat
-
Dump saturated output [dynamic]
- -ddump-simpl
-
Dump final simplifier output [dynamic]
- -ddump-simpl-iterations
-
Dump output from each simplifier iteration [dynamic]
- -ddump-spec
-
Dump specialiser output [dynamic]
- -ddump-stg
-
Dump final STG [dynamic]
- -ddump-stranal
-
Dump strictness analyser output [dynamic]
- -ddump-tc
-
Dump typechecker output [dynamic]
- -ddump-types
-
Dump type signatures [dynamic]
- -ddump-usagesp
-
Dump UsageSP analysis output [dynamic]
- -ddump-worker-wrapper
-
Dump worker-wrapper output [dynamic]
- -ddump-rn-trace
-
Trace renamer [dynamic]
- -ddump-rn-stats
-
Renamer stats [dynamic]
- -ddump-stix
-
Native code generator intermediate form [dynamic]
- -ddump-simpl-stats
-
Dump simplifier stats [dynamic]
- -dppr-debug
-
Turn on debug printing (more verbose) [static]
- -dppr-noprags
-
Don't output pragma info in dumps [static]
- -dppr-user-length
-
Set the depth for printing expressions in error msgs [static]
- -dsource-stats
-
Dump haskell source stats [dynamic]
- -dstg-lint
-
STG pass sanity checking [dynamic]
- -dstg-stats
-
Dump STG stats [dynamic]
- -dusagesp-lint
-
UsageSP sanity checker [dynamic]
- -dverbose-core2core
-
Show output from each core-to-core pass [dynamic]
- -dverbose-stg2stg
-
Show output from each STG-to-STG pass [dynamic]
- -unreg
-
Enable unregisterised compilation [static]
MISC COMPILER OPTIONS
- -funfold-casms-in-hi-file
-
Allow casms in unfoldings [static]
- -femit-extern-decls
-
??? [static]
- -fglobalise-toplev-names
-
Make all top-level names global (for -split-objs) [static]
- -fno-hi-version-check
-
Don't complain about
.hifile mismatches [static]
- -dno-black-holing
-
Turn off black holing (probably doesn't work) [static]
- -fno-method-sharing
-
Don't share specialisations of overloaded functions [static]
- -fno-prune-decls
-
Renamer: don't prune declarations [static]
- -fno-prune-tydecls
-
Renamer: don't prune type declarations [static]
- -fhistory-size
-
Set simplification history size [static]
- -funregisterised
-
Unregisterised compilation (use -unreg instead) [static]
- -fno-asm-mangling
-
Turn off assembly mangling (use -unreg instead) [static]
FILES
/usr/lib/ghc-5.04.3
SEE ALSO
/usr/share/doc/ghc5/
COPYRIGHT
Copyright 2002, The University Court of the University of Glasgow.
All rights reserved.
AUTHOR
This manual page was generated from the SGML documentation of GHC with blood, sweat, tears and a breaks-if-you-look-at-it-the-wrong-way XSL stylesheet by Michael Weber <[email protected]> for the Debian GNU/Linux system (but may be used by others).