4.20. フラグ早見表

この節はGHCのコマンド行フラグの早見表である。それぞれのフラグについて、動的/静的の区別(4.3. 静的オプション、動的オプション、モード指定オプションを見よ)と逆のフラグ(存在すれば)も載せられている。

4.20.1. ヘルプと多弁さに関するオプション

4.6. ヘルプと多弁さに関するオプション

フラグ解説動静
-?ヘルプモード-
-helpヘルプモード-
-v多弁モード(-v3と同等)-
-vn多弁さを設定する-
-VGHCのバージョンを表示モード-
––supported-extensionsまたは––supported-languages対応している言語および言語拡張を表示モード-
––infoコンパイラに関する情報を表示モード-
––versionGHCのバージョンを表示モード-
––numeric-versionGHCのバージョンを表示(数値のみ)モード-
––print-libdirGHCのライブラリディレクトリを表示モード-
-ferror-spansエラーメッセージで範囲を完全な形で表示する-
-Hsize最低ヒープサイズをsizeにする-
-Rghc-timingGHCの時間情報の要約を表示する(+RTS -tstderrと同じ)-

4.20.2. どの段階を実行するか

4.5.3. 一括処理コンパイラモード

フラグ解説動静
-E前処理まで(.hsppファイル)モード-
-CC生成まで(.hcファイル)モード-
-Sアセンブリ生成まで(.sファイル)モード-
-cリンクしない-
-x suffixソースファイルの種類に対してデフォルトでない振る舞いをする-

4.20.3. 通常以外の実行モード

4.5. 実行モード

フラグ解説動静
--interactive対話モード。通常これを使うときは単にghciを走らせる。詳細は第2章. GHCiを使うを見よ。モード-
--make複数モジュールからなるHaskellプログラムを、依存性を自動的に解決しながらビルドする。makeを使うのよりもずっと簡単で、速いことが期待できる。詳細は4.5.1. ghc ––makeを使うを見よ。モード-
-e exprexprを評価する。詳細は4.5.2. 式評価モードを見よ。モード-
-MMakefileで使うのに適した依存性情報を生成する。詳細は4.7.11. 依存関係を生成するを見よ。モード-

4.20.4. 出力先の変更

4.7.4. コンパイルの出力先を変える

フラグ解説動静
-hcsuf suffix中間Cファイルに使う接尾辞を設定する-
-hidir dirインタフェースファイルを置くディレクトリを設定する-
-hisuf suffixインタフェースファイルに使う接尾辞を設定する-
-o filename出力ファイル名を設定する-
-odir dirオブジェクトファイルのディレクトリを設定する-
-ohi filenameインタフェースを置くファイルの名前を設定する 
-osuf suffix出力ファイルの接尾辞を設定する-
-stubdir dirFFIのスタブファイルの出力先を変更する-
-dumpdir dirダンプファイルの出力先を変更する-
-outputdir dir出力ディレクトリを設定する-

4.20.5. 中間ファイルの保持

4.7.5. 中間ファイルをそのままにする

フラグ解説動静
-keep-hc-fileまたは-keep-hc-files中間の.hcファイルを保持する-
-keep-llvm-fileまたは-keep-llvm-files中間の.llLLVMファイルを保持する-
-keep-s-fileまたは-keep-s-files中間の.sファイルを保持する-
-keep-tmp-files全ての中間ファイルを保持する-

4.20.6. 一時ファイル

4.7.6. 一時ファイルの場所を変更する

フラグ解説動静
-tmpdir一時ファイルのディレクトリを設定する-

4.20.7. インポートされたものを見つける

4.7.3. 探索パス

フラグ解説動静
-idir1:dir2:...dirdir2…をインポートパスに追加する静/:set-
-iインポートディレクトリの一覧を空にする静/:set-

4.20.8. インタフェースファイルに関するオプション

4.7.7. インタフェースファイルに関連するその他のオプション

フラグ解説動静
-ddump-hi新しいインタフェースファイルを標準出力に出力する-
-ddump-hi-diffs古いインタフェースファイルと比較しての差分を表示する-
-ddump-minimal-imports最小のインポートを出力する-
--show-iface file4.5. 実行モードを見よ。  

4.20.9. 再コンパイル検査

4.7.8. 再コンパイル検査器

フラグ解説動静
-fforce-recomp再コンパイル検査を無効にする。-ddump-X系のオプションが一つでも指定されているときは自動的に有効になる。-fno-force-recomp

4.20.10. 対話モードのオプション

2.9. .ghciファイル

フラグ解説動静
-ignore-dot-ghci.ghciファイルを読むのを無効にする-
-ghci-script与えられた.ghciを追加で読む-
-fbreak-on-exception例外が投げられる度にブレークする-fno-break-on-exception
-fbreak-on-error例外やエラーがキャッチされなかった場合にブレークする-fno-break-on-error
-fprint-evld-with-show:printでShowのインスタンスを使うのを有効にする-fno-print-evld-with-show
-fprint-bind-resultGHCiで束縛の結果を表示するのを有効にする-fno-printbind-result
-fno-print-bind-contentsGHCiで束縛の中身を表示するのを無効にする-
-interactive-printGHCiで評価された式を表示するための関数を選ぶ-
-fno-implicit-import-qualifiedGHCiで、あらゆるものが暗黙にimport qualifiedされるのを無効にする-

4.20.11. パッケージ

4.9. パッケージ

フラグ解説動静
-package-name PパッケージPの一員になるようにコンパイルする-
-package PパッケージPを露出する静/:set-
-hide-all-packagesデフォルトで全てのパッケージを隠す-
-hide-package nameパッケージPを隠す静/:set-
-ignore-package nameパッケージPを無視する静/:set-
-package-db filefileをパッケージDBスタックに追加する。静/:set-
-clear-package-dbパッケージDBスタックを空にする。-
-no-global-package-dbグローバルパッケージDBをスタックから取り除く。-
-global-package-dbグローバルパッケージDBをスタックに加える。-
-no-user-package-dbユーザのパッケージDBをスタックから取り除く。-
-user-package-dbユーザのパッケージDBをスタックに加える。静/:set-
-no-auto-link-packageshaskell98パッケージを自動的にはリンクしない。-
-trust PパッケージPを露出し、trustedに設定する静/:set-
-distrust PパッケージPを露出し、distrustedに設定する静/:set-
-distrust-all デフォルトで全てのパッケージをdistrustする静/:set-

4.20.12. 言語オプション

言語オプションを有効にするには、-Xなんたらというコマンド行オプションを使うか、ファイル自体に{-# LANGUAGE なんたら #-}というプラグマを置く。7.1. 言語オプションを見よ。

フラグ解説動静
-fglasgow-exts大部分の言語拡張を有効にする。具体的には7.1. 言語オプションを見よ。-fno-glasgow-exts
-XOverlappingInstances重複インスタンスを有効にする-XNoOverlappingInstances
-XIncoherentInstances非整合インスタンスを有効にする。-XOverlappingInstancesも有効になる-XNoIncoherentInstances
-XUndecidableInstances決定不能インスタンスを有効にする-XNoUndecidableInstances
-fcontext-stack=Nn文脈簡約の制限値を設定する。デフォルトは20。 
-XArrowsアロー記法拡張を有効にする-XNoArrows
-XDisambiguateRecordFieldsレコードフィールドの曖昧性除去を有効にする-XNoDisambiguateRecordFields
-XForeignFunctionInterface他言語関数インタフェース (-fglasgow-extsによっても有効になる)-XNoForeignFunctionInterface
-XGenerics非推奨。何もしない。もはや総称クラスを有効にしない。GHCのジェネリックプログラミングのサポートも参照。-XNoGenerics
-XImplicitParams暗黙パラメタを有効にする。-fglasgow-extsによっても有効になる-XNoImplicitParams
-firrefutable-tuplesタプルのパターン照合を反駁不能にする-fno-irrefutable-tuples
-XNoImplicitPrelude暗黙にimport Preludeしない-XImplicitPrelude
-XRebindableSyntax再束縛可能な構文を有効にする-XNoRebindableSyntax
-XNoMonomorphismRestriction単相性限定を無効にする-XMonomorphismRestriction
-XNoNPlusKPatternsn+kパターンへの対応を無効にする-XNPlusKPatterns
-XNoTraditionalRecordSyntax伝統的なレコード構文(Haskell 98が対応しているもの)C {f = x}への対応を無効にする。-XTraditionalRecordSyntax
-XNoMonoPatBindsパターン束縛を多相的にする。-XMonoPatBinds
-XRelaxedPolyRec相互再帰的な多相関数の検査を緩める-XNoRelaxedPolyRec
-XExtendedDefaultRulesGHCiの拡張デフォルト化規則を通常のモードで使う-XNoExtendedDefaultRules
-XOverloadedStrings文字列リテラルの多重定義を有効にする。-XNoOverloadedStrings
-XGADTs一般化代数データ型を有効にする。-XNoGADTs
-XGADTSyntax一般化代数データ型構文を有効にする。 -XNoGADTSyntax
-XTypeFamilies型の族を有効にする。-XNoTypeFamilies
-XConstraintKinds制約の種を有効にする。-XNoConstraintKinds
-XDataKindsデータ型の昇格を有効にする。-XNoDataKinds
-XPolyKinds種多相を有効にする。-XKindSignaturesも有効になる。-XNoPolyKinds
-XScopedTypeVariables字句的スコープを持つ型変数を有効にする。-fglasgow-extsによっても有効になる。-XNoScopedTypeVariables
-XMonoLocalBinds局所的な束縛を一般化しないを有効にする。 -XNoMonoLocalBinds
-XTemplateHaskellTemplate Haskellを有効にする。もはや-fglasgow-extsによって有効にはならない-XNoTemplateHaskell
-XQuasiQuotes準クォートを有効にする-XNoQuasiQuotes
-XBangPatternsびっくりパターンを有効にする-XNoBangPatterns
-XCPPCプリプロセッサを有効にする。-XNoCPP
-XPatternGuardsパターンガードを有効にする。-XNoPatternGuards
-XViewPatternsビューパターンを有効にする。-XNoViewPatterns
-XUnicodeSyntaxUnicode構文を有効にする。-XNoUnicodeSyntax
-XMagicHash「#」を識別子につける後置修飾子として認める。-XNoMagicHash
-XExplicitForAll明示的な全称量化を有効にする。以下の各オプションによっても有効になる。-XScopedTypeVariables-XLiberalTypeSynonyms-XRank2Types-XRankNTypes-XPolymorphicComponents-XExistentialQuantification-XNoExplicitForAll
-XPolymorphicComponentsデータ構築子が多相的な構成要素を持てるようにする。-XNoPolymorphicComponents
-XRank2Typesランク2の型を有効にする。-XNoRank2Types
-XRankNTypesランクNの型を有効にする。-XNoRankNTypes
-XImpredicativeTypes非叙述的な型を有効にする。-XNoImpredicativeTypes
-XExistentialQuantification存在量化を有効にする。-XNoExistentialQuantification
-XKindSignatures種シグネチャを有効にする。-XNoKindSignatures
-XEmptyDataDecls空のデータ型宣言を有効にする。-XNoEmptyDataDecls
-XParallelListComp並行リスト内包表記を有効にする。-XNoParallelListComp
-XTransformListComp一般化リスト内包表記を有効にする。-XNoTransformListComp
-XMonadComprehensionsモナド内包表記を有効にする。-XNoMonadComprehensions
-XUnliftedFFITypesunlifted FFI typesを有効にする。-XNoUnliftedFFITypes
-XInterruptibleFFI割り込み可能なFFIを有効にする。-XNoInterruptibleFFI
-XLiberalTypeSynonyms自由化型シノニムを有効にする。-XNoLiberalTypeSynonyms
-XTypeOperators型演算子を有効にする。-XNoTypeOperators
-XExplicitNamespacesインポートリストとエクスポートリストにおいて実体の名前空間をtypeキーワードを用いて指定するのを有効にする。-XNoExplicitNamespaces
-XRecursiveDo再帰的do(mdo)記法を有効にする。-XNoRecursiveDo
-XParallelArraysparallel arrayを有効にする。-XNoParallelArrays
-XRecordWildCardsレコードワイルドカードを有効にする-XNoRecordWildCards
-XNamedFieldPunsレコード同名利用を有効にする。-XNoNamedFieldPuns
-XDisambiguateRecordFieldsフィールドの曖昧性除去を有効にする。-XNoDisambiguateRecordFields
-XUnboxedTuples非ボックス化タプルを有効にする。-XNoUnboxedTuples
-XStandaloneDeriving独立derivingを有効にする。-XNoStandaloneDeriving
-XDeriveDataTypeableDataとTypeableの両クラスについてのderivingを有効にする。-XNoDeriveDataTypeable
-XDeriveGenericGenericクラスについての自動導出を有効にする。-XNoDeriveGeneric
-XGeneralizedNewtypeDerivingnewtype derivingを有効にする。-XNoGeneralizedNewtypeDeriving
-XTypeSynonymInstancesインスタンス頭部中の型シノニムを有効にする。-XNoTypeSynonymInstances
-XFlexibleContexts柔軟な文脈を有効にする。-XTypeSynonymInstancesも有効になる。-XNoFlexibleContexts
-XFlexibleInstances柔軟なインスタンスを有効にする。-XNoFlexibleInstances
-XConstrainedClassMethods制約付きクラスメソッドを有効にする。-XNoConstrainedClassMethods
-XDefaultSignaturesデフォルトシグネチャを有効にする。-XNoDefaultSignatures
-XMultiParamTypeClasses多引数の型クラスを有効にする。-XNoMultiParamTypeClasses
-XFunctionalDependencies関数従属を有効にする。-XNoFunctionalDependencies
-XPackageImportsパッケージ修飾されたインポートを有効にする。-XNoPackageImports
-XLambdaCaselambda-case式を有効にする。-XNoLambdaCase
-XMultiWayIf多選択肢のif式を有効にする。-XNoMultiWayIf
-XSafeSafe HaskellのSafeモードを有効にする。-
-XTrustworthySafe HaskellのTrustworthyモードを有効にする。-
-XUnsafeSafe HaskellのUnsafeモードを有効にする。-
-fpackage-trustSafe Haskellのtrustworthyモジュールに関するパッケージの信頼要件を有効にする。-

4.20.13. 警告

4.8. 警告と正気度チェックのためのオプション

フラグ解説動静
-W通常の警告を有効にする-w
-w全ての警告を無効にする-
-Wallほぼ全ての警告を有効にする-w
-Werror警告を致命的にする-Wwarn
-Wwarn警告を致命的でなくする-Werror
-fdefer-type-errors型エラーを可能な限り実行時まで遅らせる。-fno-defer-type-errors
-fhelpful-errors綴りの誤っている名前について忠告する。-fno-helpful-errors
-fwarn-deprecated-flags非推奨のコマンド行フラグが使われているときに警告する-fno-warn-deprecated-flags
-fwarn-duplicate-exports実体が複数回エクスポートされているときに警告する-fno-warn-duplicate-exports
-fwarn-hi-shadowingカレントディレクトリの.hiファイルがライブラリを隠しているときに警告する-fno-warn-hi-shadowing
-fwarn-identitiesPreludeの数値変換を、おそらく恒等変換として使っている(よって省かれる)場合に警告する-fno-warn-identities
-fwarn-implicit-preludePreludeが暗黙にimportされるときに警告する-fno-warn-implicit-prelude
-fwarn-incomplete-patternsパターン照合が失敗し得るときに警告する-fno-warn-incomplete-patterns
-fwarn-incomplete-uni-patternsラムダ式やパターン束縛におけるパターンが失敗し得るときに警告する-fno-warn-incomplete-uni-patterns
-fwarn-incomplete-record-updatesレコード更新が失敗し得るときに警告する-fno-warn-incomplete-record-updates
-fwarn-lazy-unlifted-bindings正格でなければならないパターン束縛が遅延されるように見えるときに警告する-fno-warn-lazy-unlifted-bindings
-fwarn-missing-fieldsレコードのフィールドが初期化されていないときに警告する-fno-warn-missing-fields
-fwarn-missing-import-listsimport宣言がスコープに導入される名前全てを明示的に列挙していないときに警告する-fnowarn-missing-import-lists
-fwarn-missing-methodsクラスメソッドが定義されていないときに警告する-fno-warn-missing-methods
-fwarn-missing-signaturesシグネチャのない最上位の関数があれば警告する-fno-warn-missing-signatures
-fwarn-missing-local-sigsシグネチャのない多相的な局所束縛があれば警告する-fno-warn-missing-local-sigs
-fwarn-monomorphism-restriction単相性制限が適用されたときに警告する-fno-warn-monomorphism-restriction
-fwarn-name-shadowing名前の隠蔽があれば警告する-fno-warn-name-shadowing
-fwarn-orphans, -fwarn-auto-orphansモジュールに孤立したインスタンス宣言や書き換え規則があるときに警告する-fno-warn-orphans, -fno-warn-auto-orphans
-fwarn-overlapping-patterns重複パターンがあれば警告する-fno-warn-overlapping-patterns
-fwarn-tabsソースファイル中にタブがあったときに警告する-fno-warn-tabs
-fwarn-type-defaultsデフォルト化が起きたときに警告する-fno-warn-type-defaults
-fwarn-unrecognised-pragmasGHCが認識できないプラグマが使われているときに警告する-fno-warn-unrecognised-pragmas
-fwarn-unused-binds未使用の束縛があれば警告する-fno-warn-unused-binds
-fwarn-unused-imports不必要なインポートがあれば警告する-fno-warn-unused-imports
-fwarn-unused-matchesパターン中に未使用の変数があれば警告する-fno-warn-unused-matches
-fwarn-unused-do-bind()以外の型の値を捨てているように見えるdo bindingがあれば警告する。-fno-warn-unused-do-bind
-fwarn-wrong-do-bind束縛するべきだったモナドな値を捨てているように見えるdo bindingがあれば警告する。-fno-warn-wrong-do-bind
-fwarn-unsafeコンパイルしているモジュールがunsafeと見なされる場合に警告する。安全性推論を使う場合に、モジュールが安全かどうかを確認するために使うべきである。-fno-warn-unsafe
-fwarn-safeコンパイルしているモジュールがsafeと見なされる場合に警告する。安全性推論を使う場合に、モジュールが安全かどうかを確認するために使うべきである。-fno-warn-safe
-fwarn-warnings-deprecationsWARNINGおよびDEPRECATEDプラグマの付いた関数・型が使われているときに警告する-fno-warn-warnings-deprecations

4.20.14. 最適化水準

4.10. 最適化(コードの改善)

フラグ解説動静
-Oデフォルトの最適化(水準1)を有効にする-O0
-On最適化水準をnに設定する-O0

4.20.15. 個々の最適化

4.10.2. -f*: プラットフォーム非依存のフラグ

フラグ解説動静
-fcase-mergecase-mergingを有効にする。-Oオプションによって有効になる。-fno-case-merge
-fcse共通部分式の除去を有効にする。-Oによっても有効になる。-fno-cse
-fdicts-strict辞書を正格にする-fno-dicts-strict
-fdo-eta-reductionイータ簡約を有効にする。-Oによって有効になる。-fno-do-eta-reduction
-fdo-lambda-eta-expansionラムダイータ展開を有効にする-fno-do-lambda-eta-expansion
-feager-blackholingeager blackholingを有効にする-
-fenable-rewrite-rules全ての書き換え規則(多重定義関数の自動特殊化で生成されたものも含む)を有効にする。-Oによっても有効になる。-fno-enable-rewrite-rules
-fvectorise入れ子データ並列のベクトル化を有効にする-fno-vectorise
-favoid-vectベクトル化回避を有効にする(実験的)-fno-avoid-vect
-fexcess-precision中間値の精度超過を有効にする-fno-excess-precision
-ffloat-in"float-in"最適化を有効にする。-Oによっても有効になる。-fno-float-in
-ffull-laziness完全遅延(束縛を外側に向かって浮遊させる)を有効にする。-Oによっても有効になる。-fno-full-laziness
-fignore-assertsソース中のアサーションを無視する-fno-ignore-asserts
-fignore-interface-pragmasインタフェースファイル中のプラグマを無視する-fno-ignore-interface-pragmas
-fliberate-caseliberate-case変換を有効にする。-O2によっても有効になる。-fno-liberate-case
-fliberate-case-threshold=nliberate-case変換における大きさ閾値をnに設定する。(デフォルト: 200)-fno-liberate-case-threshold
-fmax-simplifier-iterations単純化器の最大繰り返し回数を設定する-
-fmax-worker-argsワーカにこれだけの引数があるとき、これ以上アンパックしない(デフォルト: 10)-
-fno-opt-coercioncoercion最適化器を使わない-
-fno-pre-inliningpre-inliningを無効にする-
-fno-state-hack実世界の状態トークンを引数として持つラムダが単一進入だとみなされ、従ってその内容をインライン化できる、という「stateハック」を無効にする。-
-fpedantic-bottomsGHCがボトムをより精密に扱うようにする(しかし、-fno-state-hackも見よ)。特に、case式を透過してイータ展開をすることがなくなる。-fno-pedantic-bottoms
-fomit-interface-pragmasインタフェースプラグマを生成しない-fno-omit-interface-pragmas
-fsimplifier-phases単純化器の段階の数を設定する(デフォルトは2)。-O0が与えられたときには無視される。-
-fsimpl-tick-factor=n単純化器のtickの倍率を百分率で指定する(デフォルトは100)。-
-fspec-constrSpecConstr変換を有効にする。-O2によっても有効になる。-fno-spec-constr
-fspec-constr-threshold=nSpecConstr変換の大きさ閾値をnにする。(デフォルト: 200)-fno-spec-constr-threshold
-fspec-constr-count=n一つの関数についてSpecConstr変換で作られる特殊化の数の最大値をnにする。(デフォルト: 3)-fno-spec-constr-count
-fspecialise多重定義された関数の特殊化を有効にする。-Oによっても有効になる。-fno-specialise
-fstrictness正格性解析を有効にする。-Oによっても有効になる。-fno-strictness
-fstrictness=before=n単純化器の段階nの前に、追加で正格性解析を行なう。-
-fstatic-argument-transformation静的引数変換を有効にする。-O2によって有効になる。-fno-static-argument-transformation
-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-use-threshold展開の設定を調整する-fno-unfolding-use-threshold

4.20.16. プロファイルに関するオプション

第5章. プロファイルを取る

フラグ解説動静
-profプロファイルを有効にする-
-fprof-autoINLINE指定されていない全ての関数に自動的にSCCを付加する-fno-prof-auto
-fprof-auto-topINLINE指定されていない全ての最上位の関数に自動的にSCCを付加する-fno-prof-auto
-fprof-auto-exportedエクスポートされていてINLINE指定されていない全ての関数に自動的にSCCを付加する-fno-prof-auto
-fprof-cafs全てのCAFに自動的にSCCを付加する-fno-prof-cafs
-fno-prof-count-entries進入回数を収集しない-fprof-count-entries
-tickyticky-tickyプロファイルを有効にする-

4.20.17. プログラム網羅オプション

5.7. コード網羅率を観察する

フラグ解説動静
-fhpcHaskellプログラム網羅率の計器付与を有効にする-
-hpcdir dirコンパイル中に.mixファイルを保管するディレクトリ(デフォルトは.hpc)-

4.20.18. Haskell前処理器オプション

4.12.4. Haskell前処理器に影響するオプション

フラグ解説動静
-F前処理器(-pgmFで設定される)の使用を有効にする-

4.20.19. Cプリプロセッサオプション

4.12.3. Cプリプロセッサに影響するオプション

フラグ解説動静
-cppHaskellソースファイルに対してCプリプロセッサを走らせる-
-Dsymbol[=value]Cプリプロセッサのシンボルを定義する-Usymbol
-UsymbolCプリプロセッサのシンボルを未定義にする-
-Idir#includeファイルの探索ディレクトリにdirを加える-

4.20.20. コード生成オプション

4.12.5. コード生成に影響するオプション

フラグ解説動静
-fasmネイティブコード生成器を使う-fllvm
-fllvmLLVMコード生成器を使う-fasm
-fno-codeコード生成を省略する-
-fbyte-codeバイトコードを生成する-
-fobject-codeオブジェクトコードを生成する-

4.20.21. プログラムのリンク

4.12.6. リンクに影響するオプション

フラグ解説動静
-shared(実行ファイルでなく)共有ライブラリを生成する-
-fPIC(可能なら)位置独立コードを生成する-
-dynamic(可能なら)動的なHaskellライブラリを使う-
-dynload実行時に共有ライブラリを見つけるための方法として、いくつかから一つ選ぶ。-
-framework nameDarwin/MacOS Xのみ。フレームワークnameをリンクする。このオプションはAppleのリンカの-frameworkオプションに相当する。-
-framework-path nameDarwin/MacOS Xのみ。ディレクトリdirをフレームワークを探索するディレクトリ一覧に加える。これはAppleのリンカの-Fオプションに相当する。-
-llibライブラリlibをリンクする-
-Ldirdirをライブラリを探索するディレクトリの一覧に加える-
-main-ismainのモジュールと関数を設定する-
--mk-dllDLL作成モード(Windows のみ)-
-no-hs-mainプログラムにmainがあるとは考えない-
-rtsopts, -rtsopts={none,some,all}RTSの振る舞いを、コマンド行フラグと環境変数GHCRTSで調整できるようにするかどうかを制御する。noneを使うと、一切のRTSフラグを与えられないということになる。someなら、最小限の、安全なオプションのみを与えられる(デフォルト)。allなら(あるいは、引数がないなら)全てのRTSフラグが許可されるという意味である。-
-with-rtsopts=optsデフォルトのRTSオプションをoptsに設定する。-
-no-linkリンクを省略する-
-split-objsオブジェクトを分割する(ライブラリ用)-
-static静的なHaskellライブラリを使う-
-threadedスレッド化されたランタイムを使う-
-debugデバッグ用ランタイムを使う-
-eventlogランタイムのevent tracingを有効にする-
-fno-gen-manifestマニフェストファイルを生成しない(Windowsのみ)-
-fno-embed-manifestマニフェストファイルを実行ファイルに埋め込まない(Windowsのみ)-
-fno-shared-implibDLL用のインポートライブラリを生成しない(Windowsのみ)-
-dylib-install-name pathライブラリファイルのインストール先のフルパスを示すinstall nameを設定する(これはAppleのリンカに-install_nameを渡すことで行なう)。後にこのライブラリをリンクするライブラリや実行ファイルは、このライブラリを実行時に探索する場所としてこのパスを選ぶ。(Darwin/MacOS Xのみ)-

4.20.22. プラグインオプション

9.3. コンパイラプラグイン

フラグ解説動静
-fplugin=module与えられたモジュールからエクスポートされているプラグインをロードする-
-fplugin-opt=module:argsプラグインモジュールに引数を与える。モジュールは-fpluginで指定されねばならない-

4.20.23. 段階の置き換え

4.12.1. それぞれの段階で使われるプログラムを変更する

フラグ解説動静
-pgmL cmdcmdを文芸前処理器として使う-
-pgmP cmdcmdをCプリプロセッサとして使う(-cppが指定された場合のみ)-
-pgmc cmdcmdをCコンパイラとして使う-
-pgmlo cmdcmdをLLVM最適化器として使う-
-pgmlc cmdcmdをLLVMコンパイラとして使う-
-pgms cmdcmdをsplitterとして使う-
-pgma cmdcmdをアセンブラとして使う-
-pgml cmdcmdをリンカとして使う-
-pgmdll cmdcmdをDLL生成器として使う-
-pgmF cmdcmdを前処理器として使う(-Fが指定されているときのみ)-
-pgmwindres cmdcmdを、Windowsでマニフェストを埋め込むためのプログラムとして使う。-

4.20.24. 特定の段階にオプションを強制する

4.12.2. 特定の段階にオプションを強制する

フラグ解説動静
-optL optionoptionを文芸前処理器に渡す-
-optP optionoptionをcppに渡す(-cppが指定されているときのみ)-
-optF optionoptionを用意した前処理器に渡す-
-optc optionoptionをCコンパイラに渡す-
-optlo optionoptionをLLVM最適化器に渡す-
-optlc optionoptionをLLVMコンパイラに渡す-
-optm optionoptionをmanglerに渡す-
-opta optionoptionをアセンブラに渡す-
-optl optionoptionをリンカに渡す-
-optdll optionoptionをDLL生成器に渡す-
-optwindres optionoptionwindresに渡す-

4.20.25. プラットフォーム固有のオプション

4.16. プラットフォーム固有のフラグ

フラグ解説動静
-msse2(x86のみ)浮動小数点にSSE2を使う-
-monly-[432]-regs(x86のみ)レジスタをいくつかCコンパイラに返す-

4.20.26. 外部コアファイルに関するオプション

4.18. 外部コアファイルを生成・コンパイルする

フラグ解説動静
-fext-core外部コアファイル.hcrを生成する-

4.20.27. コンパイラのデバッグに関するオプション

4.19. コンパイラをデバッグする

フラグ解説動静
-dcore-lint内部的な正気度チェックを有効にする-
-ddump-to-file標準出力でなくファイルに出力する-
-ddump-asmアセンブリを表示-
-ddump-bcosインタプリタバイトコードを出力-
-ddump-cmmC--出力を表示-
-ddump-core-stats最適化パイプラインの最後に、Coreプログラムの大きさの一行要約を表示する-
-ddump-cpranalCPR解析の出力を表示-
-ddump-cseCSEの出力を表示-
-ddump-deriv自動導出(deriving)の出力を表示-
-ddump-ds脱糖器の出力を表示-
-ddump-flatC「平坦な」Cを表示-
-ddump-foreignforeign exportのスタブを表示-
-ddump-hpcプログラム網羅率のために計器付与された段階で表示-
-ddump-inliningsインライン化情報を表示-
-ddump-llvmLLVM中間コードを出力する-
-ddump-occur-anal出現解析の出力を表示-
-ddump-opt-cmmC--からC--への最適化過程の出力を表示-
-ddump-parsed構文解析木を表示-
-ddump-prepprepared coreを表示-
-ddump-rn名前変更器の出力を表示-
-ddump-rule-firings規則(rules)の発火情報を表示-
-ddump-rule-rewrites規則(rules)の詳細な発火情報を表示-
-ddump-rules規則(rules)を表示-
-ddump-vectベクトル化器の入力と出力を表示-
-ddump-simpl単純化器の最終出力を表示-
-ddump-simpl-phases単純化器の段階毎の出力を表示-
-ddump-simpl-iterations単純化器の繰り返し毎の出力を表示-
-ddump-spec特殊化器の出力を表示-
-ddump-splices接合されたTH式と、その評価結果を表示-
-ddump-stg最終STGを表示-
-ddump-stranal正格性解析器の出力を表示-
-ddump-tc型検査器の出力を表示-
-ddump-types型シグネチャを表示-
-ddump-worker-wrapperworker/wrapper出力を表示-
-ddump-if-traceインタフェースファイルを追跡-
-ddump-tc-trace型検査器を追跡-
-ddump-vt-traceベクトル化器を追跡-
-ddump-rn-trace名前変更器を追跡-
-ddump-rn-stats名前変更器の統計情報-
-ddump-simpl-stats単純化器の統計情報を出力-
-dno-debug-output要求された以外のデバッグ出力を抑制する-
-dppr-debugデバッグ表示を有効にする(さらなる多弁)-
-dppr-nopragsデバッグ出力中でプラグマ情報を出力しない-
-dppr-user-lengthエラーメッセージで表示する式の深さを設定する-
-dppr-colsNNNデバッグ出力の幅を設定する。例えば-dppr-cols200-
-dppr-case-as-let選択肢が一つのcase式を正格なletとして表示する。-
-dsuppress-allコア出力において、抑制可能なものを全て抑制する。-
-dsuppress-uniquesデバッグ出力中で固有子を表示することを抑制する(diffが使いやすくなる)-
-dsuppress-idinfo識別子の束縛地点に置かれる、識別子についての拡張情報を抑制する。-
-dsuppress-module-prefixesモジュール修飾接頭辞を表示するのを抑制する。-
-dsuppress-type-signatures型シグネチャを抑制する-
-dsuppress-type-applications型適用を抑制する-
-dsuppress-coercionsCore出力の中で型変換(coercion)を表示するのを抑制し、Core出力が短かくなるようにする。-
-dsource-statsHaskellソースの統計情報を表示-
-dcmm-lintC--過程の正気度チェック-
-dstg-lintSTG過程の正気度チェック-
-dstg-statsSTG統計情報を表示-
-dverbose-core2coreコアからコアへの過程一回毎に出力を表示-
-dverbose-stg2stgSTGからSTGへの過程一回毎に出力を表示-
-dshow-passes過程の名前を発生ごとに表示-
-dfaststring-stats終了時にfast stringの利用に関する統計情報を表示-

4.20.28. その他のコンパイルオプション

フラグ解説動静
-fno-hi-version-check.hiファイルが合致しなくても文句を言わない-
-dno-black-holingブラックホール化を無効にする(おそらく動作しない)-
-fhistory-size単純化履歴の大きさを設定する-
-funregisterised非レジスタ化コンパイル(代わりに-unregを使うこと)-
-fno-ghci-historyGHCiのコマンドヒストリghci_historyを読み書きしない。-
-fno-ghci-sandboxGHCiのサンドボックスを無効にする。これは、フォークされたスレッドではなく主スレッドで計算が走るということである。-