neulab/tldr huggingface dataset:
-d, --detach Rather than checking out a branch to work on it, check out a commit for inspection and discardable experiments. This is the default behavior of git checkout <commit> when <commit> is not a branch name. See the "DETACHED HEAD" section below for details.
--orphan <new_branch> Create a new orphan branch, named <new_branch>, started from <start_point> and switch to it. The first commit made on this new branch will have no parents and it will be the root of a new history totally disconnected from all the other branches and commits.
The index and the working tree are adjusted as if you had previously run git checkout <start_point>. This allows you to start a new history that records a set of paths similar to <start_point> by easily running git commit -a to make the root commit.
This can be useful when you want to publish the tree from a commit without exposing its full history. You might want to do this to publish an open source branch of a project whose current tree is "clean", but whose full history contains proprietary or otherwise encumbered bits of code.
If you want to start a disconnected history that records a set of paths that is totally different from the one of <start_point>, then you should clear the index and the working tree right after creating the orphan branch by running git rm -rf .  from the top level of the working tree. Afterwards you will be ready to prepare your new files, repopulating the working tree, by copying them from elsewhere, extracting a tarball, etc.
--ignore-skip-worktree-bits In sparse checkout mode, git checkout -- <paths> would update only entries matched by <paths> and sparse patterns in $GIT_DIR/info/sparse-checkout. This option ignores the sparse patterns and adds back any files in <paths>.
-m, --merge When switching branches, if you have local modifications to one or more files that are different between the current branch and the branch to which you are switching, the command refuses to switch branches in order to preserve your modifications in context. However, with this option, a three-way merge between the current branch, your working tree contents, and the new branch is done, and you will be on the new branch.
When checking out paths from the index, this option lets you recreate the conflicted merge in the specified paths.
When switching branches with --merge, staged changes may be lost.
-p, --patch Interactively select hunks in the difference between the <tree-ish> (or the index, if unspecified) and the working tree. The chosen hunks are then applied in reverse to the working tree (and if a <tree-ish> was specified, the index).
This means that you can use git checkout -p to selectively discard edits from your current working tree. See the “Interactive Mode” section of git-add(1) to learn how to operate the --patch mode.
Note that this option uses the no overlay mode by default (see also --overlay), and currently doesn’t support overlay mode.
--ignore-other-worktrees git checkout refuses when the wanted ref is already checked out by another worktree. This option makes it check the ref out anyway. In other words, the ref can be held by more than one worktree.
--overwrite-ignore, --no-overwrite-ignore Silently overwrite ignored files when switching branches. This is the default behavior. Use --no-overwrite-ignore to abort the operation when the new branch contains ignored files.
--recurse-submodules, --no-recurse-submodules Using --recurse-submodules will update the content of all active submodules according to the commit recorded in the superproject. If local modifications in a submodule would be overwritten the checkout will fail unless -f is used. If nothing (or --no-recurse-submodules) is used, submodules working trees will not be updated. Just like git- submodule(1), this will detach HEAD of the submodule.
--overlay, --no-overlay In the default overlay mode, git checkout never removes files from the index or the working tree. When specifying --no-overlay, files that appear in the index and working tree, but not in <tree-ish> are removed, to make them match <tree-ish> exactly.
<branch> Branch to checkout; if it refers to a branch (i.e., a name that, when prepended with "refs/heads/", is a valid ref), then that branch is checked out. Otherwise, if it refers to a valid commit, your HEAD becomes "detached" and you are no longer on any branch (see below for details).
You can use the @{-N} syntax to refer to the N-th last branch/commit checked out using "git checkout" operation. You may also specify - which is synonymous to @{-1}.
<new_branch> Name for the new branch.
<start_point> The name of a commit at which to start the new branch; see git- branch(1) for details. Defaults to HEAD.
<tree-ish> Tree to checkout from (when paths are given). If not specified, the index will be used.
HEAD normally refers to a named branch (e.g. master). Meanwhile, each branch refers to a specific commit. Let’s look at a repo with three commits, one of them tagged, and with branch master checked out:
HEAD (refers to branch 'master') | v a---b---c  branch 'master' (refers to commit 'c') ^ | tag 'v2.0' (refers to commit 'b')
When a commit is created in this state, the branch is updated to refer to the new commit. Specifically, git commit creates a new commit d, whose parent is commit c, and then updates branch master to refer to new commit d. HEAD still refers to branch master and so indirectly now refers to commit d:
$ edit; git add; git commit
HEAD (refers to branch 'master') | v a---b---c---d  branch 'master' (refers to commit 'd') ^ | tag 'v2.0' (refers to commit 'b')
It is sometimes useful to be able to checkout a commit that is not at the tip of any named branch, or even to create a new commit that is not referenced by a named branch. Let’s look at what happens when we checkout commit b (here we show two ways this may be done):
$ git checkout v2.0  # or $ git checkout master^^
HEAD (refers to commit 'b') | v a---b---c---d  branch 'master' (refers to commit 'd') ^ | tag 'v2.0' (refers to commit 'b')
Notice that regardless of which checkout command we use, HEAD now refers directly to commit b. This is known as being in detached HEAD state. It means simply that HEAD refers to a specific commit, as opposed to referring to a named branch. Let’s see what happens when we create a commit:
HEAD (refers to commit 'e') | v e / a---b---c---d  branch 'master' (refers to commit 'd') ^ | tag 'v2.0' (refers to commit 'b')
There is now a new commit e, but it is referenced only by HEAD. We can of course add yet another commit in this state:
HEAD (refers to commit 'f') | v e---f / a---b---c---d  branch 'master' (refers to commit 'd') ^ | tag 'v2.0' (refers to commit 'b')
In fact, we can perform all the normal Git operations. But, let’s look at what happens when we then checkout master:
$ git checkout master
HEAD (refers to branch 'master') e---f     | /          v a---b---c---d  branch 'master' (refers to commit 'd') ^ | tag 'v2.0' (refers to commit 'b')
It is important to realize that at this point nothing refers to commit f. Eventually commit f (and by extension commit e) will be deleted by the routine Git garbage collection process, unless we create a reference before that happens. If we have not yet moved away from commit f, any of these will create a reference to it:
$ git checkout -b foo   (1) $ git branch foo        (2) $ git tag foo           (3)
1. creates a new branch foo, which refers to commit f, and then updates HEAD to refer to branch foo. In other words, we’ll no longer be in detached HEAD state after this command. 2. similarly creates a new branch foo, which refers to commit f, but leaves HEAD detached. 3. creates a new tag foo, which refers to commit f, leaving HEAD detached.
If we have moved away from commit f, then we must first recover its object name (typically by using git reflog), and then we can create a reference to it. For example, to see the last two commits to which HEAD referred, we can use either of these commands:
$ git reflog -2 HEAD # or $ git log -g -2 HEAD
When there is only one argument given and it is not -- (e.g. git checkout abc), and when the argument is both a valid <tree-ish> (e.g. a branch abc exists) and a valid <pathspec> (e.g. a file or a directory whose name is "abc" exists), Git would usually ask you to disambiguate. Because checking out a branch is so common an operation, however, git checkout abc takes "abc" as a <tree-ish> in such a situation. Use git checkout -- <pathspec> if you want to checkout these paths out of the index.
1. The following sequence checks out the master branch, reverts the Makefile to two revisions back, deletes hello.c by mistake, and gets it back from the index.
$ git checkout master             (1) $ git checkout master~2 Makefile  (2) $ rm -f hello.c $ git checkout hello.c            (3)
1. switch branch 2. take a file out of another commit 3. restore hello.c from the index
If you want to check out all C source files out of the index, you can say
$ git checkout -- '*.c'
Note the quotes around *.c. The file hello.c will also be checked out, even though it is no longer in the working tree, because the file globbing is used to match entries in the index (not in the working tree by the shell).
If you have an unfortunate branch that is named hello.c, this step would be confused as an instruction to switch to that branch. You should instead write:
$ git checkout -- hello.c
2. After working in the wrong branch, switching to the correct branch would be done using:
$ git checkout mytopic
However, your "wrong" branch and correct mytopic branch may differ in files that you have modified locally, in which case the above checkout would fail like this:
$ git checkout mytopic error: You have local changes to 'frotz'; not switching branches.
$ git checkout -m mytopic Auto-merging frotz
3. When a merge conflict happens during switching branches with the -m option, you would see something like this:
$ git checkout -m mytopic Auto-merging frotz ERROR: Merge conflict in frotz fatal: merge program failed
At this point, git diff shows the changes cleanly merged as in the previous example, as well as the changes in the conflicted files. Edit and resolve the conflict and mark it resolved with git add as usual:
$ edit frotz $ git add frotz
git-switch(1), git-restore(1)
Irssi(1)                     General Commands Manual                    Irssi(1)
Irssi - a modular IRC client for UNIX
irssi [--config=PATH] [--home=PATH] [-dv!?] [-c server] [-p port] [-n nickname] [-w password] [-h hostname]
Irssi is a modular Internet Relay Chat client; it is highly extensible and very secure. Being a fullscreen, termcap based client with many features, Irssi is easily extensible through scripts and modules.
--config=FILE use FILE instead of ~/.irssi/config
--home=PATH PATH specifies the home directory of Irssi; default is ~/.irssi
-c, --connect=SERVER connect to SERVER
-w, --password=PASSWORD use PASSWORD for authentication.
-p, --port=PORT automatically connect to PORT on server.
-!, --noconnect disable autoconnecting of servers
-n, --nick=NICKNAME specify NICKNAME as your nick
-h, --hostname=HOSTNAME use HOSTNAME for your irc session
-v, --version display the version of Irssi
-?, --help show a help message
Irssi has a solid amount of documentation available; check /HELP or look online at https://irssi.org
~/.irssi/config personal configuration file
~/.irssi/config.autosave automatic save of the personal config file when it was changed externally
~/.irssi/default.theme default irssi theme
~/.irssi/away.log logged messages in away status
~/.irssi/scripts/ default scripts directory
~/.irssi/scripts/autorun/ directory containing links to scripts that should be loaded automatically on startup
~/.irssi/startup file containing a list of commands to execute on startup
AUTHORS/CREDITS Irssi was written by Timo Sirainen; this manpage was written by Istvan Sebestyen, Stefan Tomanek, Geert Hauwaerts.
GHC(1)                      Glasgow Haskell Compiler                      GHC(1)
ghc - the Glasgow Haskell Compiler
ghc [option|filename] ghci [option|filename]
This manual page documents briefly the ghc and ghci commands. Note that ghci is not yet available on all architectures. Extensive documentation is available in various other formats including PDF <https://downloads.haskell.org/ghc/latest/docs/users_guide.pdf> and HTML <https://downloads.haskell.org/ghc/latest/docs/html/>.
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, -fllvm, 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
.⟨way⟩_o object files for "way" ⟨way⟩; common ways are:
dyn    dynamically-linked
p      built with profiling
.⟨way⟩_hi interface files for "way" ⟨way⟩; common ways are:
Code generation -dynamic-too -fasm -fllvm -fbyte-code -fexternal-dynamic-refs -fllvm -fasm -fno-code -fobject-code -fPIC -fPIE -fwrite-interface
Debugging the compiler -dcmm-lint -dcore-lint -ddump-asm -ddump-asm-expanded -ddump-asm-liveness -ddump-asm-native -ddump-asm-regalloc -ddump-asm-regalloc-stages -ddump-asm-stats -ddump-bcos -ddump-cfg-weights -ddump-cmm -ddump-cmm-caf -ddump-cmm-cbe -ddump-cmm-cfg -ddump-cmm-cps -ddump-cmm-from-stg -ddump-cmm-info -ddump-cmm-opt -ddump-cmm-proc -ddump-cmm-procmap -ddump-cmm-raw -ddump-cmm-sink -ddump-cmm-sp -ddump-cmm-split -ddump-cmm-switch -ddump-cmm-verbose -ddump-cmm-verbose-by-proc -ddump-core-stats -ddump-cpr-signatures -ddump-cpranal -ddump-cse -ddump-deriv -ddump-ds -ddump-ds-preopt -ddump-ec-trace -ddump-file-prefix=⟨str⟩ -ddump-foreign -ddump-hie -ddump-hpc -ddump-if-trace -ddump-inlinings -ddump-json -ddump-llvm -ddump-mod-map -ddump-occur-anal -ddump-opt-cmm -ddump-parsed -ddump-parsed-ast -ddump-prep -ddump-rn -ddump-rn-ast -ddump-rn-stats -ddump-rn-trace -ddump-rtti -ddump-rule-firings -ddump-rule-rewrites -ddump-rules -ddump-simpl -ddump-simpl-iterations -ddump-simpl-stats -ddump-spec -ddump-splices -ddump-stg -ddump-stg-final -ddump-stg-unarised -ddump-str-signatures -ddump-stranal -ddump-tc -ddump-tc-ast -ddump-tc-trace -ddump-ticked -ddump-timings -ddump-to-file -ddump-types -ddump-worker-wrapper -dfaststring-stats -dhex-word-literals -dinitial-unique=⟨s⟩ -dinline-check=⟨str⟩ -dlinear-core-lint -dno-debug-output -ddebug-output -dno-typeable-binds -dppr-case-as-let -dppr-cols=⟨n⟩ -dppr-debug -dppr-user-length -drule-check=⟨str⟩ -dshow-passes -dstg-lint -dsuppress-all -dsuppress-coercions -dsuppress-idinfo -dsuppress-module-prefixes -dsuppress-stg-free-vars -dsuppress-ticks -dsuppress-timestamps -dsuppress-type-applications -dsuppress-type-signatures -dsuppress-unfoldings -dsuppress-uniques -dsuppress-var-kinds -dth-dec-file -dunique-increment=⟨i⟩ -dverbose-core2core -dverbose-stg2stg -falignment-sanitisation -fcatch-bottoms -fllvm-fill-undef-with-garbage -fproc-alignment -g -g⟨n⟩
C pre-processor -cpp -D⟨symbol⟩[=⟨value⟩] -U⟨symbol⟩ -I⟨dir⟩ -U⟨symbol⟩
Finding imports -i -i⟨dir⟩[:⟨dir⟩]*
Interactive mode -fbreak-on-error -fno-break-on-error -fbreak-on-exception -fno-break-on-exception -fghci-hist-size=⟨n⟩ -fghci-leak-check -fno-ghci-leak-check -flocal-ghci-history -fno-local-ghci-history -fno-it -fno-no-it -fprint-bind-result -fno-print-bind-result -fprint-evld-with-show -fshow-loaded-modules -ghci-script -ignore-dot-ghci -interactive-print ⟨name⟩
Interface files --show-iface ⟨file⟩ -ddump-hi -ddump-hi-diffs -ddump-minimal-imports
Keeping intermediate files -keep-hc-file -keep-hc-files -keep-hi-files -no-keep-hi-files -keep-hscpp-file -keep-hscpp-files -keep-llvm-file -keep-llvm-files -keep-o-files -no-keep-o-files -keep-s-file -keep-s-files -keep-tmp-files
Language options -XAllowAmbiguousTypes -XApplicativeDo -XArrows -XBangPatterns -XBinaryLiterals -XBlockArguments -XCApiFFI -XConstrainedClassMethods -XConstraintKinds -XCPP -XCUSKs -XDataKinds -XDatatypeContexts -XDefaultSignatures -XDeriveAnyClass -XDeriveDataTypeable -XDeriveFoldable -XDeriveFunctor -XDeriveGeneric -XDeriveLift -XDeriveTraversable -XDerivingStrategies -XDerivingVia -XDisambiguateRecordFields -XDuplicateRecordFields -XEmptyCase -XEmptyDataDecls -XEmptyDataDeriving -XExistentialQuantification -XExplicitForAll -XExplicitNamespaces -XExtendedDefaultRules -XFlexibleContexts -XFlexibleInstances -XForeignFunctionInterface -XFunctionalDependencies -XGADTs -XGADTSyntax -XGeneralisedNewtypeDeriving -XGeneralizedNewtypeDeriving -XGHCForeignImportPrim -XHaskell2010 -XHaskell98 -XHexFloatLiterals -XImplicitParams -XImportQualifiedPost -XImpredicativeTypes -XIncoherentInstances -XInstanceSigs -XInterruptibleFFI -XKindSignatures -XLambdaCase -XLexicalNegation -XLiberalTypeSynonyms -XLinearTypes -XMagicHash -XMonadComprehensions -XMonadFailDesugaring -XMonoLocalBinds -XMultiParamTypeClasses -XMultiWayIf -XNamedFieldPuns -XNamedWildCards -XNegativeLiterals -XNoImplicitPrelude -XNoMonomorphismRestriction -XNondecreasingIndentation -XNoPatternGuards -XNoTraditionalRecordSyntax -XNPlusKPatterns -XNullaryTypeClasses -XNumDecimals -XNumericUnderscores -XOverlappingInstances -XOverloadedLabels -XOverloadedLists -XOverloadedStrings -XPackageImports -XParallelListComp -XPartialTypeSignatures -XPatternSynonyms -XPolyKinds -XPostfixOperators -XQualifiedDo -XQuantifiedConstraints -XQuasiQuotes -XRank2Types -XRankNTypes -XRebindableSyntax -XRecordWildCards -XRecursiveDo -XRoleAnnotations -XSafe -XScopedTypeVariables -XStandaloneDeriving -XStandaloneKindSignatures -XStarIsType -XStaticPointers -XStrict -XStrictData -XTemplateHaskell -XTemplateHaskellQuotes -XTransformListComp -XTrustworthy -XTupleSections -XTypeApplications -XTypeFamilies -XTypeFamilyDependencies -XTypeInType -XTypeOperators -XTypeSynonymInstances -XUnboxedSums -XUnboxedTuples -XUndecidableInstances -XUndecidableSuperClasses -XUnicodeSyntax -XUnliftedFFITypes -XUnliftedNewtypes -XUnsafe -XViewPatterns
Linking options -c -debug -dylib-install-name ⟨path⟩ -dynamic -dynload -eventlog -fkeep-cafs -flink-rts -fno-embed-manifest -fno-gen-manifest -fno-shared-implib -framework ⟨name⟩ -framework-path ⟨dir⟩ -fwhole-archive-hs-libs -L ⟨dir⟩ -l ⟨lib⟩ -main-is ⟨thing⟩ -no-hs-main -no-rtsopts-suggestions -package ⟨name⟩ -pie -rdynamic -rtsopts[=⟨none|some|all|ignore|ignoreAll⟩] -shared -split-sections -static -staticlib -threaded -with-rtsopts=⟨opts⟩
Miscellaneous options -fexternal-interpreter -fglasgow-exts -fno-glasgow-exts -fno-safe-haskell -ghcversion-file ⟨path to ghcversion.h⟩ -H ⟨size⟩ -j[⟨n⟩]
Modes of operation --frontend ⟨module⟩ --help -? --info --interactive --make --mk-dll --numeric-version --print-libdir --show-iface ⟨file⟩ --show-options --supported-extensions --supported-languages --version -V -e ⟨expr⟩ -M
Individual optimizations -fasm-shortcutting -fno-asm-shortcutting -fbinary-blob-threshold=⟨n⟩ -fblock-layout-cfg -fno-block-layout-cfg -fblock-layout-weightless -fno-block-layout-weightless -fblock-layout-weights -fcall-arity -fno-call-arity -fcase-folding -fno-case-folding -fcase-merge -fno-case-merge -fcmm-elim-common-blocks -fno-cmm-elim-common-blocks -fcmm-sink -fno-cmm-sink -fcmm-static-pred -fno-cmm-static-pred -fcpr-anal -fno-cpr-anal -fcross-module-specialise -fno-cross-module-specialise -fcse -fno-cse -fdicts-cheap -fno-dicts-cheap -fdicts-strict -fno-dicts-strict -fdmd-tx-dict-sel -fno-dmd-tx-dict-sel -fdo-eta-reduction -fno-do-eta-reduction -fdo-lambda-eta-expansion -fno-do-lambda-eta-expansion -feager-blackholing -fenable-rewrite-rules -fno-enable-rewrite-rules -fexcess-precision -fno-excess-precision -fexitification -fno-exitification -fexpose-all-unfoldings -fno-expose-all-unfoldings -ffloat-in -fno-float-in -ffull-laziness -fno-full-laziness -ffun-to-thunk -fno-fun-to-thunk -fignore-asserts -fno-ignore-asserts -fignore-interface-pragmas -fno-ignore-interface-pragmas -flate-dmd-anal -fno-late-dmd-anal -flate-specialise -fno-late-specialise -fliberate-case -fno-liberate-case -fliberate-case-threshold=⟨n⟩ -fno-liberate-case-threshold -fllvm-pass-vectors-in-regs -fno-llvm-pass-vectors-in-regs -floopification -fno-loopification -fmax-inline-alloc-size=⟨n⟩ -fmax-inline-memcpy-insns=⟨n⟩ -fmax-inline-memset-insns=⟨n⟩ -fmax-simplifier-iterations=⟨n⟩ -fmax-uncovered-patterns=⟨n⟩ -fmax-worker-args=⟨n⟩ -fno-opt-coercion -fno-pre-inlining -fno-state-hack -fomit-interface-pragmas -fno-omit-interface-pragmas -fomit-yields -fno-omit-yields -foptimal-applicative-do -fno-optimal-applicative-do -fpedantic-bottoms -fno-pedantic-bottoms -fregs-graph -fno-regs-graph -fregs-iterative -fno-regs-iterative -fsimpl-tick-factor=⟨n⟩ -fsimplifier-phases=⟨n⟩ -fsolve-constant-dicts -fno-solve-constant-dicts -fspec-constr -fno-spec-constr -fspec-constr-count=⟨n⟩ -fno-spec-constr-count -fspec-constr-keen -fno-spec-constr-keen -fspec-constr-threshold=⟨n⟩ -fno-spec-constr-threshold -fspecialise -fno-specialise -fspecialise-aggressively -fno-specialise-aggressively -fstatic-argument-transformation -fno-static-argument-transformation -fstg-cse -fno-stg-cse -fstg-lift-lams -fno-stg-lift-lams -fstg-lift-lams-known -fno-stg-lift-lams-known -fstg-lift-lams-non-rec-args -fno-stg-lift-lams-non-rec-args-any -fstg-lift-lams-rec-args -fno-stg-lift-lams-rec-args-any -fstrictness -fno-strictness -fstrictness-before=⟨n⟩ -funbox-small-strict-fields -fno-unbox-small-strict-fields -funbox-strict-fields -fno-unbox-strict-fields -funfolding-creation-threshold=⟨n⟩ -funfolding-dict-discount=⟨n⟩ -funfolding-fun-discount=⟨n⟩ -funfolding-keeness-factor=⟨n⟩ -funfolding-use-threshold=⟨n⟩ -fworker-wrapper
Optimization levels -O -O1 -O0 -O0 -O2 -O0 -O⟨n⟩ -O0
Package options -clear-package-db -distrust ⟨pkg⟩ -distrust-all-packages -fpackage-trust -global-package-db -hide-all-packages -hide-package ⟨pkg⟩ -ignore-package ⟨pkg⟩ -no-auto-link-packages -no-global-package-db -no-user-package-db -package ⟨pkg⟩ -package-db ⟨file⟩ -package-env ⟨file⟩|⟨name⟩ -package-id ⟨unit-id⟩ -this-unit-id ⟨unit-id⟩ -trust ⟨pkg⟩ -user-package-db
Phases of compilation -C -c -E -F -S -x ⟨suffix⟩
Overriding external programs -pgma ⟨cmd⟩ -pgmc ⟨cmd⟩ -pgmdll ⟨cmd⟩ -pgmF ⟨cmd⟩ -pgmi ⟨cmd⟩ -pgminstall_name_tool ⟨cmd⟩ -pgmL ⟨cmd⟩ -pgml ⟨cmd⟩ -pgmlc ⟨cmd⟩ -pgmlibtool ⟨cmd⟩ -pgmlm ⟨cmd⟩ -pgmlo ⟨cmd⟩ -pgmotool ⟨cmd⟩ -pgmP ⟨cmd⟩ -pgms ⟨cmd⟩ -pgmwindres ⟨cmd⟩
Phase-specific options -opta ⟨option⟩ -optc ⟨option⟩ -optcxx ⟨option⟩ -optdll ⟨option⟩ -optF ⟨option⟩ -opti ⟨option⟩ -optL ⟨option⟩ -optl ⟨option⟩ -optlc ⟨option⟩ -optlm ⟨option⟩ -optlo ⟨option⟩ -optP ⟨option⟩ -optwindres ⟨option⟩ -pgmc-supports-no-pie
Platform-specific options -mbmi2 -msse2 -msse4.2
Compiler plugins -fclear-plugins -fplugin-opt=⟨module⟩:⟨args⟩ -fplugin-trustworthy -fplugin=⟨module⟩ -hide-all-plugin-packages -plugin-package ⟨pkg⟩ -plugin-package-id ⟨pkg-id⟩
Profiling -fno-prof-auto -fprof-auto -fno-prof-cafs -fprof-cafs -fno-prof-count-entries -fprof-count-entries -fprof-auto -fno-prof-auto -fprof-auto-calls -fno-prof-auto-calls -fprof-auto-exported -fno-prof-auto -fprof-auto-top -fno-prof-auto -fprof-cafs -fno-prof-cafs -prof -ticky
Program coverage -fhpc
Recompilation checking -fforce-recomp -fno-force-recomp -fignore-hpc-changes -fno-ignore-hpc-changes -fignore-optim-changes -fno-ignore-optim-changes
Redirecting output --exclude-module=⟨file⟩ -ddump-mod-cycles -dep-makefile ⟨file⟩ -dep-suffix ⟨suffix⟩ -dumpdir ⟨dir⟩ -hcsuf ⟨suffix⟩ -hidir ⟨dir⟩ -hiedir ⟨dir⟩ -hiesuf ⟨suffix⟩ -hisuf ⟨suffix⟩ -include-cpp-deps -include-pkg-deps -o ⟨file⟩ -odir ⟨dir⟩ -ohi ⟨file⟩ -osuf ⟨suffix⟩ -outputdir ⟨dir⟩ -stubdir ⟨dir⟩
Temporary files -tmpdir ⟨dir⟩
Verbosity options -fabstract-refinement-hole-fits -fno-abstract-refinement-hole-fits -fdefer-diagnostics -fdiagnostics-color=⟨always|auto|never⟩ -fdiagnostics-show-caret -fno-diagnostics-show-caret -ferror-spans -fhide-source-paths -fkeep-going -fmax-refinement-hole-fits=⟨n⟩ -fno-max-refinement-hole-fits -fmax-relevant-binds=⟨n⟩ -fno-max-relevant-binds -fmax-valid-hole-fits=⟨n⟩ -fno-max-valid-hole-fits -fno-show-valid-hole-fits -fno-sort-valid-hole-fits -fsort-valid-hole-fits -fprint-axiom-incomps -fno-print-axiom-incomps -fprint-equality-relations -fno-print-equality-relations -fprint-expanded-synonyms -fno-print-expanded-synonyms -fprint-explicit-coercions -fno-print-explicit-coercions -fprint-explicit-foralls -fno-print-explicit-foralls -fprint-explicit-kinds -fno-print-explicit-kinds -fprint-explicit-runtime-reps -fno-print-explicit-runtime-reps -fprint-potential-instances -fno-print-potential-instances -fprint-typechecker-elaboration -fno-print-typechecker-elaboration -fprint-unicode-syntax -fno-print-unicode-syntax -frefinement-level-hole-fits=⟨n⟩ -fno-refinement-level-hole-fits -freverse-errors -fno-reverse-errors -fshow-docs-of-hole-fits -fno-show-docs-of-hole-fits -fshow-hole-constraints -fshow-hole-matches-of-hole-fits -fno-show-hole-matches-of-hole-fits -fshow-provenance-of-hole-fits -fno-show-provenance-of-hole-fits -fshow-type-app-of-hole-fits -fno-show-type-app-of-hole-fits -fshow-type-app-vars-of-hole-fits -fno-show-type-app-vars-of-hole-fits -fshow-type-of-hole-fits -fno-type-of-hole-fits -fsort-by-size-hole-fits -fno-sort-by-size-hole-fits -fsort-by-subsumption-hole-fits -fno-sort-by-subsumption-hole-fits -funclutter-valid-hole-fits -Rghc-timing -v -v⟨n⟩
Code generation -dynamic-too Build dynamic object files as well as static object files during compilation
-fasm  Use the native code generator
-fbyte-code Generate byte-code
-fexternal-dynamic-refs Generate code for linking against dynamic libraries
-fllvm Compile using the LLVM code generator
-fno-code Omit code generation
-fobject-code Generate object code
-fPIC  Generate position-independent code (where available)
-fPIE  Generate code for a position-independent executable (where available)
-fwrite-interface Always write interface files
Debugging the compiler -dcmm-lint C-\- pass sanity checking
-dcore-lint Turn on internal sanity checking
-ddump-asm Dump final assembly
-ddump-asm-expanded Dump the result of the synthetic instruction expansion pass.
-ddump-asm-liveness Dump assembly augmented with register liveness
-ddump-asm-native Dump initial assembly
-ddump-asm-regalloc Dump the result of register allocation
-ddump-asm-regalloc-stages Dump the build/spill stages of the -fregs-graph register allocator.
-ddump-asm-stats Dump statistics from the register allocator.
-ddump-bcos Dump interpreter byte code
-ddump-cfg-weights Dump the assumed weights of the CFG.
-ddump-cmm Dump the final C-\- output
-ddump-cmm-caf Dump the results of the C-\- CAF analysis pass.
-ddump-cmm-cbe Dump the results of common block elimination
-ddump-cmm-cfg Dump the results of the C-\- control flow optimisation pass.
-ddump-cmm-cps Dump the results of the CPS pass
-ddump-cmm-from-stg Dump STG-to-C-\- output
-ddump-cmm-info Dump the results of the C-\- info table augmentation pass.
-ddump-cmm-opt Dump the results of C-\- to C-\- optimising passes
-ddump-cmm-proc Dump the results of proc-point analysis
-ddump-cmm-procmap Dump the results of the C-\- proc-point map pass.
-ddump-cmm-raw Dump raw C-\-
-ddump-cmm-sink Dump the results of the C-\- sinking pass.
-ddump-cmm-sp Dump the results of the C-\- stack layout pass.
-ddump-cmm-split Dump the results of the C-\- proc-point splitting pass.
-ddump-cmm-switch Dump the results of switch lowering passes
-ddump-cmm-verbose Write output from main C-\- pipeline passes to files
-ddump-cmm-verbose-by-proc Show output from main C-\- pipeline passes (grouped by proc)
-ddump-core-stats Print a one-line summary of the size of the Core program at the end of the optimisation pipeline
-ddump-cpr-signatures Dump CPR signatures
-ddump-cpranal Dump CPR analysis output
-ddump-cse Dump CSE output
-ddump-deriv Dump deriving output
-ddump-ds Dump desugarer output.
-ddump-ec-trace Trace exhaustiveness checker
-ddump-file-prefix=⟨str⟩ Set the prefix of the filenames used for debugging output.
-ddump-foreign Dump foreign export stubs
-ddump-hie Dump the hie file syntax tree
-ddump-hpc An alias for -ddump-ticked.
-ddump-if-trace Trace interface files
-ddump-inlinings Dump inlining info
-ddump-json Dump error messages as JSON documents
-ddump-llvm Dump LLVM intermediate code.
-ddump-mod-map Dump the state of the module mapping database.
-ddump-occur-anal Dump occurrence analysis output
-ddump-opt-cmm Dump the results of C-\- to C-\- optimising passes
-ddump-parsed Dump parse tree
-ddump-parsed-ast Dump parser output as a syntax tree
-ddump-prep Dump prepared core
-ddump-rn Dump renamer output
-ddump-rn-ast Dump renamer output as a syntax tree
-ddump-rn-stats Renamer stats
-ddump-rn-trace Trace renamer
-ddump-rtti Trace runtime type inference
-ddump-rule-firings Dump rule firing info
-ddump-rule-rewrites Dump detailed rule firing info
-ddump-rules Dump rewrite rules
-ddump-simpl Dump final simplifier output
-ddump-simpl-iterations Dump output from each simplifier iteration
-ddump-simpl-stats Dump simplifier stats
-ddump-spec Dump specialiser output
-ddump-splices Dump TH spliced expressions, and what they evaluate to
-ddump-stg Show CoreToStg output
-ddump-stg-final Show output of last STG pass.
-ddump-stg-unarised Show unarised STG
-ddump-str-signatures Dump strictness signatures
-ddump-stranal Dump strictness analyser output
-ddump-tc Dump typechecker output
-ddump-tc-ast Dump typechecker output as a syntax tree
-ddump-tc-trace Trace typechecker
-ddump-ticked Dump the code instrumented by HPC (hpc).
-ddump-timings Dump per-pass timing and allocation statistics
-ddump-to-file Dump to files instead of stdout
-ddump-types Dump type signatures
-ddump-worker-wrapper Dump worker-wrapper output
-dfaststring-stats Show statistics for fast string usage when finished
-dhex-word-literals Print values of type Word# in hexadecimal.
-dinitial-unique=⟨s⟩ Start UniqSupply allocation from ⟨s⟩.
-dinline-check=⟨str⟩ Dump information about inlining decisions
-dlinear-core-lint Turn on internal sanity checking
-dno-debug-output Suppress unsolicited debugging output
-dno-typeable-binds Don't generate bindings for Typeable methods
-dppr-case-as-let Print single alternative case expressions as strict lets.
-dppr-cols=⟨n⟩ Set the width of debugging output. For example -dppr-cols200
-dppr-debug Turn on debug printing (more verbose)
-dppr-user-length Set the depth for printing expressions in error msgs
-drule-check=⟨str⟩ Dump information about potential rule application
-dshow-passes Print out each pass name as it happens
-dstg-lint STG pass sanity checking
-dsuppress-all In dumps, suppress everything (except for uniques) that is suppressible.
-dsuppress-coercions Suppress the printing of coercions in Core dumps to make them shorter
-dsuppress-idinfo Suppress extended information about identifiers where they are bound
-dsuppress-module-prefixes Suppress the printing of module qualification prefixes
-dsuppress-stg-free-vars Suppress the printing of closure free variable lists in STG output
-dsuppress-ticks Suppress "ticks" in the pretty-printer output.
-dsuppress-timestamps Suppress timestamps in dumps
-dsuppress-type-applications Suppress type applications
-dsuppress-type-signatures Suppress type signatures
-dsuppress-unfoldings Suppress the printing of the stable unfolding of a variable at its binding site
-dsuppress-uniques Suppress the printing of uniques in debug output (easier to use diff)
-dsuppress-var-kinds Suppress the printing of variable kinds
-dth-dec-file Dump evaluated TH declarations into *.th.hs files
-dunique-increment=⟨i⟩ Set the increment for the generated Unique's to ⟨i⟩.
-dverbose-core2core Show output from each core-to-core pass
-dverbose-stg2stg Show output from each STG-to-STG pass
-falignment-sanitisation Compile with alignment checks for all info table dereferences.
-fcatch-bottoms Add a default error alternative to case expressions without a default alternative.
-fllvm-fill-undef-with-garbage Intruct LLVM to fill dead STG registers with garbage
-fproc-alignment Align functions at given boundary.
-g     Produce DWARF debug information in compiled object files.  ⟨n⟩ can be 0, 1, or 2, with higher numbers producing richer output. If ⟨n⟩ is omitted, level 2 is assumed.
C pre-processor -cpp   Run the C pre-processor on Haskell source files
-D⟨symbol⟩[=⟨value⟩] Define a symbol in the C pre-processor
-I⟨dir⟩ Add ⟨dir⟩ to the directory search list for #include files
-U⟨symbol⟩ Undefine a symbol in the C pre-processor
Finding imports -i     Empty the import directory list
-i⟨dir⟩[:⟨dir⟩]* add ⟨dir⟩, ⟨dir2⟩, etc. to import path
Interactive mode -fbreak-on-error Break on uncaught exceptions and errors
-fbreak-on-exception Break on any exception thrown
-fghci-hist-size=⟨n⟩ Set the number of entries GHCi keeps for :history.  See ghci-debugger.
-fghci-leak-check (Debugging only) check for space leaks when loading new modules in GHCi.
-flocal-ghci-history Use current directory for the GHCi command history file .ghci-history.
-fno-it No longer set the special variable it.
-fprint-bind-result Turn on printing of binding results in GHCi
-fprint-evld-with-show Instruct :print to use Show instances where possible.
-fshow-loaded-modules Show the names of modules that GHCi loaded after a :load command.
-ghci-script Read additional .ghci files
-ignore-dot-ghci Disable reading of .ghci files
-interactive-print ⟨name⟩ Select the function to use for printing evaluated expressions in GHCi
Interface files --show-iface ⟨file⟩ See modes.
-ddump-hi Dump the new interface to stdout
-ddump-hi-diffs Show the differences vs. the old interface
-ddump-minimal-imports Dump a minimal set of imports
Keeping intermediate files -keep-hc-file Retain intermediate .hc files.
-keep-hi-files Retain intermediate .hi files (the default).
-keep-hscpp-file Retain intermediate .hscpp files.
-keep-llvm-file Retain intermediate LLVM .ll files.  Implies -fllvm.
-keep-o-files Retain intermediate .o files (the default).
-keep-s-file Retain intermediate .s files.
-keep-tmp-files Retain all intermediate temporary files.
Language options -XAllowAmbiguousTypes Allow the user to write ambiguous types, and the type inference engine to infer them.
-XApplicativeDo Enable Applicative do-notation desugaring
-XArrows Enable arrow notation extension
-XBangPatterns Enable bang patterns.
-XBinaryLiterals Enable support for binary literals.
-XBlockArguments Allow do blocks and other constructs as function arguments.
-XCApiFFI Enable the CAPI calling convention.
-XConstrainedClassMethods Enable constrained class methods.
-XConstraintKinds Enable a kind of constraints.
-XCPP  Enable the C preprocessor.
-XCUSKs Enable detection of complete user-supplied kind signatures.
-XDataKinds Enable datatype promotion.
-XDatatypeContexts Allow contexts on data types.
-XDefaultSignatures Enable default signatures.
-XDeriveAnyClass Enable deriving for any class.
-XDeriveDataTypeable Enable deriving for the Data class.  Implied by (deprecated) AutoDeriveTypeable.
-XDeriveFoldable Enable deriving for the Foldable class.  Implied by DeriveTraversable.
-XDeriveFunctor Enable deriving for the Functor class.  Implied by DeriveTraversable.
-XDeriveGeneric Enable deriving for the Generic class.
-XDeriveLift Enable deriving for the Lift class
-XDeriveTraversable Enable deriving for the Traversable class.  Implies DeriveFunctor and DeriveFoldable.
-XDerivingStrategies Enables deriving strategies.
-XDerivingVia Enable deriving instances via types of the same runtime representation.  Implies DerivingStrategies.
-XDisambiguateRecordFields Enable record field disambiguation.  Implied by RecordWildCards.
-XDuplicateRecordFields Allow definition of record types with identically-named fields.
-XEmptyCase Allow empty case alternatives.
-XEmptyDataDecls Allow definition of empty data types.
-XEmptyDataDeriving Allow deriving instances of standard type classes for empty data types.
-XExistentialQuantification Enable liberalised type synonyms.
-XExplicitForAll Enable explicit universal quantification.  Implied by ScopedTypeVariables, LiberalTypeSynonyms, RankNTypes and ExistentialQuantification.
-XExplicitNamespaces Enable using the keyword type to specify the namespace of entries in imports and exports (explicit-namespaces).  Implied by TypeOperators and TypeFamilies.
-XExtendedDefaultRules Use GHCi's extended default rules in a normal module.
-XFlexibleContexts Enable flexible contexts.
-XFlexibleInstances Enable flexible instances.  Implies TypeSynonymInstances.
-XForeignFunctionInterface Enable foreign function interface.
-XFunctionalDependencies Enable functional dependencies.  Implies MultiParamTypeClasses.
-XGADTs Enable generalised algebraic data types.  Implies GADTSyntax and MonoLocalBinds.
-XGADTSyntax Enable generalised algebraic data type syntax.
-XGeneralisedNewtypeDeriving Enable newtype deriving.
-XGeneralizedNewtypeDeriving Enable newtype deriving.
-XGHCForeignImportPrim Enable prim calling convention. Intended for internal use only.
-XHaskell2010 Use the Haskell 2010 language variant.
-XHaskell98 Use the Haskell 98 language variant.
-XHexFloatLiterals Enable support for hexadecimal floating point literals.
-XImplicitParams Enable Implicit Parameters.
-XImportQualifiedPost ImportQualifiedPost allows the syntax import M qualified
-XImpredicativeTypes Enable impredicative types.  Implies RankNTypes.
-XIncoherentInstances Enable incoherent instances.  Implies OverlappingInstances.
-XInstanceSigs Enable instance signatures.
-XInterruptibleFFI Enable interruptible FFI.
-XKindSignatures Enable kind signatures.  Implied by TypeFamilies and PolyKinds.
-XLambdaCase Enable lambda-case expressions.
-XLexicalNegation Use whitespace to determine whether the minus sign stands for negation or subtraction.
-XLiberalTypeSynonyms Enable liberalised type synonyms.
-XLinearTypes Enable linear types.
-XMagicHash Allow # as a postfix modifier on identifiers.
-XMonadComprehensions Enable monad comprehensions.
-XMonadFailDesugaring Enable monadfail desugaring.
-XMonoLocalBinds Enable do not generalise local bindings.  Implied by TypeFamilies and GADTs.
-XMultiParamTypeClasses Enable multi parameter type classes.  Implied by FunctionalDependencies.
-XMultiWayIf Enable multi-way if-expressions.
-XNamedFieldPuns Enable record puns.
-XNamedWildCards Enable named wildcards.
-XNegativeLiterals Enable support for negative literals.
-XNoImplicitPrelude Don't implicitly import Prelude.  Implied by RebindableSyntax.
-XNoMonomorphismRestriction Disable the monomorphism restriction.
-XNondecreasingIndentation Allow nested contexts to be at the same indentation level as its enclosing context.
-XNoPatternGuards Disable pattern guards.  Implied by Haskell98.
-XNoTraditionalRecordSyntax Disable support for traditional record syntax (as supported by Haskell 98) C {f = x}
-XNPlusKPatterns Enable support for n+k patterns.  Implied by Haskell98.
-XNullaryTypeClasses Deprecated, does nothing. nullary (no parameter) type classes are now enabled using MultiParamTypeClasses.
-XNumDecimals Enable support for 'fractional' integer literals.
-XNumericUnderscores Enable support for numeric underscores.
-XOverlappingInstances Enable overlapping instances.
-XOverloadedLabels Enable overloaded labels.
-XOverloadedLists Enable overloaded lists.
-XOverloadedStrings Enable overloaded string literals.
-XPackageImports Enable package-qualified imports.
-XParallelListComp Enable parallel list comprehensions.
-XPartialTypeSignatures Enable partial type signatures.
-XPatternSynonyms Enable pattern synonyms.
-XPolyKinds Enable kind polymorphism.  Implies KindSignatures.
-XPostfixOperators Enable postfix operators.
-XQualifiedDo Enable qualified do-notation desugaring.
-XQuantifiedConstraints Allow forall quantifiers in constraints.
-XQuasiQuotes Enable quasiquotation.
-XRank2Types Enable rank-2 types.  Synonym for RankNTypes.
-XRankNTypes Enable rank-N types.  Implied by ImpredicativeTypes.
-XRebindableSyntax Employ rebindable syntax.  Implies NoImplicitPrelude.
-XRecordWildCards Enable record wildcards.  Implies DisambiguateRecordFields.
-XRecursiveDo Enable recursive do (mdo) notation.
-XRoleAnnotations Enable role annotations.
-XSafe Enable the Safe Haskell Safe mode.
-XScopedTypeVariables Enable lexically-scoped type variables.
-XStandaloneDeriving Enable standalone deriving.
-XStandaloneKindSignatures Allow the use of standalone kind signatures.
-XStarIsType Treat * as Data.Kind.Type.
-XStaticPointers Enable static pointers.
-XStrict Make bindings in the current module strict by default.
-XStrictData Enable default strict datatype fields.
-XTemplateHaskell Enable Template Haskell.
-XTemplateHaskellQuotes Enable quotation subset of Template Haskell.
-XTransformListComp Enable generalised list comprehensions.
-XTrustworthy Enable the Safe Haskell Trustworthy mode.
-XTupleSections Enable tuple sections.
-XTypeApplications Enable type application syntax in terms and types.
-XTypeFamilies Enable type families.  Implies ExplicitNamespaces, KindSignatures, and MonoLocalBinds.
-XTypeFamilyDependencies Enable injective type families.  Implies TypeFamilies.
-XTypeInType Deprecated. Enable kind polymorphism and datatype promotion.
-XTypeOperators Enable type operators.  Implies ExplicitNamespaces.
-XTypeSynonymInstances Enable type synonyms in instance heads.  Implied by FlexibleInstances.
-XUnboxedSums Enable unboxed sums.
-XUnboxedTuples Enable the use of unboxed tuple syntax.
-XUndecidableInstances Enable undecidable instances.
-XUndecidableSuperClasses Allow all superclass constraints, including those that may result in non-termination of the typechecker.
-XUnicodeSyntax Enable unicode syntax.
-XUnliftedFFITypes Enable unlifted FFI types
-XUnliftedNewtypes Enable unlifted newtypes.
-XUnsafe Enable Safe Haskell Unsafe mode.
-XViewPatterns Enable view patterns.
Linking options -c     Stop after generating object (.o) file
-debug Use the debugging runtime
-dylib-install-name ⟨path⟩ Set the install name (via -install_name 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/OS X only)
-dynamic Build dynamically-linked object files and executables
-dynload Selects one of a number of modes for finding shared libraries at runtime.
-eventlog Enable runtime event tracing
-fkeep-cafs Do not garbage-collect CAFs (top-level expressions) at runtime
-flink-rts Link the runtime when generating a shared or static library
-fno-embed-manifest Do not embed the manifest in the executable (Windows only)
-fno-gen-manifest Do not generate a manifest file (Windows only)
-fno-shared-implib Don't generate an import library for a DLL (Windows only)
-framework ⟨name⟩ On Darwin/OS X/iOS only, link in the framework ⟨name⟩. This option corresponds to the -framework option for Apple's Linker.
-framework-path ⟨dir⟩ On Darwin/OS X/iOS only, add ⟨dir⟩ to the list of directories searched for frameworks. This option corresponds to the -F option for Apple's Linker.
-fwhole-archive-hs-libs When linking a binary executable, this inserts the flag -Wl,--whole-archive before any -l flags for Haskell libraries, and -Wl,--no-whole-archive afterwards
-L ⟨dir⟩ Add ⟨dir⟩ to the list of directories searched for libraries
-l ⟨lib⟩ Link in library ⟨lib⟩
-main-is ⟨thing⟩ Set main module and function
-no-hs-main Don't assume this program contains main
-no-rtsopts-suggestions Don't print RTS suggestions about linking with -rtsopts[=⟨none|some|all|ignore|ignoreAll⟩].
-package ⟨name⟩ Expose package ⟨pkg⟩
-pie   Instruct the linker to produce a position-independent executable.
-rdynamic This instructs the linker to add all symbols, not only used ones, to the dynamic symbol table. Currently Linux and Windows/MinGW32 only. This is equivalent to using -optl -rdynamic on Linux, and -optl -export-all-symbols on Windows.
-rtsopts[=⟨none|some|all|ignore|ignoreAll⟩] Control whether the RTS behaviour can be tweaked via command-line flags and the GHCRTS environment variable. Using none means no RTS flags can be given; some means only a minimum of safe options can be given (the default); all (or no argument at all) means that all RTS flags are permitted; ignore means RTS flags can be given, but are treated as regular arguments and passed to the Haskell program as arguments; ignoreAll is the same as ignore, but GHCRTS is also ignored. -rtsopts does not affect -with-rtsopts behavior; flags passed via -with-rtsopts are used regardless of -rtsopts.
-shared Generate a shared library (as opposed to an executable)
-split-sections Split sections for link-time dead-code stripping
-static Use static Haskell libraries
-staticlib Generate a standalone static library (as opposed to an executable). This is useful when cross compiling. The library together with all its dependencies ends up in in a single static library that can be linked against.
-threaded Use the threaded runtime
-with-rtsopts=⟨opts⟩ Set the default RTS options to ⟨opts⟩.
Miscellaneous options -fexternal-interpreter Run interpreted code in a separate process
-fglasgow-exts Deprecated. Enable most language extensions; see options-language for exactly which ones.
-fno-safe-haskell Disable Safe Haskell
-ghcversion-file ⟨path to ghcversion.h⟩ (GHC as a C compiler only) Use this ghcversion.h file
-H ⟨size⟩ Set the minimum size of the heap to ⟨size⟩
-j[⟨n⟩] When compiling with --make, compile ⟨n⟩ modules in parallel.
Modes of operation --frontend ⟨module⟩ run GHC with the given frontend plugin; see frontend_plugins for details.
--info display information about the compiler
--interactive Interactive mode - normally used by just running ghci; see ghci for details.
--make Build a multi-module Haskell program, automatically figuring out dependencies. Likely to be much easier, and faster, than using make; see make-mode for details.
--mk-dll DLL-creation mode (Windows only)
--numeric-version display GHC version (numeric only)
--print-libdir display GHC library directory
--show-iface ⟨file⟩ display the contents of an interface file.
--show-options display the supported command line options
--supported-extensions display the supported language extensions
--version display GHC version
-e ⟨expr⟩ Evaluate expr; see eval-mode for details.
-M     generate dependency information suitable for use in a Makefile; see makefile-dependencies for details.
Individual optimizations -fasm-shortcutting Enable shortcutting on assembly. Implied by -O2.
-fbinary-blob-threshold=⟨n⟩ default: 500K. Tweak assembly generator for binary blobs.
-fblock-layout-cfg Use the new cfg based block layout algorithm.
-fblock-layout-weightless Ignore cfg weights for code layout.
-fblock-layout-weights Sets edge weights used by the new code layout algorithm.
-fcall-arity Enable call-arity optimisation. Implied by -O.
-fcase-folding Enable constant folding in case expressions. Implied by -O.
-fcase-merge Enable case-merging. Implied by -O.
-fcmm-elim-common-blocks Enable Cmm common block elimination. Implied by -O.
-fcmm-sink Enable Cmm sinking. Implied by -O.
-fcmm-static-pred Enable static control flow prediction. Implied by -O.
-fcpr-anal Turn on CPR analysis in the demand analyser. Implied by -O.
-fcross-module-specialise Turn on specialisation of overloaded functions imported from other modules.
-fcse  Enable common sub-expression elimination. Implied by -O.
-fdicts-cheap Make dictionary-valued expressions seem cheap to the optimiser.
-fdicts-strict Make dictionaries strict
-fdmd-tx-dict-sel Use a special demand transformer for dictionary selectors.  Always enabled by default.
-fdo-eta-reduction Enable eta-reduction. Implied by -O.
-fdo-lambda-eta-expansion Enable lambda eta-expansion. Always enabled by default.
-feager-blackholing Turn on eager blackholing
-fenable-rewrite-rules Switch on all rewrite rules (including rules generated by automatic specialisation of overloaded functions). Implied by -O.
-fexcess-precision Enable excess intermediate precision
-fexitification Enables exitification optimisation. Implied by -O.
-fexpose-all-unfoldings Expose all unfoldings, even for very large or recursive functions.
-ffloat-in Turn on the float-in transformation. Implied by -O.
-ffull-laziness Turn on full laziness (floating bindings outwards).  Implied by -O.
-ffun-to-thunk Allow worker-wrapper to convert a function closure into a thunk if the function does not use any of its arguments. Off by default.
-fignore-asserts Ignore assertions in the source. Implied by -O.